sábado, 10 de mayo de 2008

CREAR TUS PROPIAS RUTINAS DE CONVERSIÓN

Ante todo la educación, lo primero presentarme. Soy Alejo, nuevo colaborador de Saperos On Line.
Mi primer post es uno que ya publiqué en mi casi difunto miniblog en alejote.com

Mediante ABAP se puede cambiar el formato de una variable mediante muchas formas. Una de ellas es USING EDIT MASK '==CONV' siendo CONV el código de la rutina de conversión a aplicar de 5 caracteres como máximo. Estas son las mismas rutinas que se utilizan en los dominios, por ejemplo en el dominio KUNNR (nº de cliente) la rutina es ALPHA, rutina que llena de ceros el valor de la variable. Con doble click sobre la rutina ALPHA se puede ver que dirige entre otras a dos funciones CONVERSION_EXIT_ALPHA_INPUT y CONVERSION_EXIT_ALPHA_OUTPUT. Estas son las funciones que usa para mostrar las variables de una u otra forma. Cuando usamos USING EDIT MASK '==CONV' se llama a la función CONVERSION_EXIT_CONV_OUTPUT pasándole como parámetros la variable a la que queremos cambiar el formato. Hay una barbaridad de rutinas de conversión nada documentadas. Puedes buscar en la SE37 por CONVERSION_EXIT_*_*PUT.

Bueno, ¿y qué pasa si no encuentro la rutina de conversión que estaba buscando? Pues te puedes crear una. Para ello simplemente te creas una función llamada CONVERSION_EXIT_ZXXXX_OUTPUT con XXXX los 4 caracteres que quieras y los parámetros de entrada y salida como los de cualquier función de conversión del estándar. Lo de la Z no es imprescindible pero me da que es necesario para no perderla en actualizaciones de SAP. Después puedes llamar a tu rutina con USING EDIT MASK '==ZXXXX'.

Por ejemplo aquí tienes un convierte-fechas:

FUNCTION conversion_exit_zfec1_output. *"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(INPUT) TYPE CLIKE
*" EXPORTING
*" REFERENCE(OUTPUT) TYPE CLIKE
*"-------------------------------------------------------------------
output = input.
IF STRLEN( input ) = 8.
CONCATENATE input+6
input+4(2)
input(4)
INTO output.
ENDIF.

ENDFUNCTION.


3 warnings:

r_daneel dijo...

Bienvenido a este humilde grupo de damnificados por SAP!!

Alejo dijo...

Gracias, ya ves que he empezado con ganas y ya he publicado otra entrada.

Felipe Pari dijo...

Gracias por el tip, me sirvio mucho! un saludo!