3 trucos ABAP para programar menos

Caso: Se enumeran algunos trucos para reducir el tiempo que se tarda programando.

Solución:

Truco 1: Armar estructuras utilizando el botón “MODELO”.

Casi siempre usamos estructuras para nuestros reportes y se pierde mucho tiempo en agregar los campos tipeándolos, veamos este trick usando el “MODELO”, también se pueden ver otras opciones ahí mismo.

Y el resultado final:

2. Copy+Paste de datos en columna

Si nos gusta crear una estructura desde el diccionario y luego completar con el texto TYPE manualmente, aquí un truco:

Seleccionamos los campos para pegarlos en nuestro programa:

He aquí el truco! Usamos ALT+drag and drop del mouse para seleccionar la info y trabajar con ella.

Por ejemplo me traigo los TYPES del punto anterior….o selecciono los tipos de datos y los elimino todos de una vez!

Para eliminar igual, con CTRL+X (cortar) o Suprimir (delete).

3. Uso del TAB para proponer texto personalizado.

Ya sabemos que el TAB nos ayuda a proponernos instrucciones, pero podemos agregar código nuestro? Si, veamos donde: el editor ABAP, en la esquina inferior derecha hay un ícono, lo presionamos.

Ahí en Modelos de códigos podemos ver los actuales y crearnos nuevos, por ejemplo:

Ahora, ya en el código:

Nos aparece el código ingresado

Categorías:ABAP/4 Etiquetas: , , , , , , ,

Agregar nueva fuente TrueType para Sapscript/Smartforms

Caso: Se desea agregar una nueva fuente Truetype a SAP para utilizarlo en Sapscripts o Smartforms.

Solución: Por la SE73 ingresamos a la opción “Instalar font TrueType”

En la pantalla siguiente, definimos un nombre para la fuente (tomaremos de ejemplo el caso de la fuente Arial)

Las fuentes podemos rescatarlas de C:WindowsFonts o de Internet y en Arial por ejemplo existen 4 formas:

· arial.ttf (normal),

· arialbd.ttf (negrita o bold),

· ariali.ttf (cursiva o italic)

· arialbi.ttf (negrita cursiva o italic).

Esto quiere decir que tendremos que subir cada uno de los archivos cambiando los tildes de los atributos de la pantalla en cada caso.

Agregando la fuente normal, nos abre un popup donde indicamos el fichero Font si no lo indicamos

Nos va a pedir una OT de Workbench:

Y luego un texto

Finalmente nos da un informe:

Hacemos lo mismo con las otras variantes de la fuente Arial, por ejemplo para negrita o bold:

Nos preguntará si instalamos el nuevo Font y le ponemos que si:

Y así con el resto de las variantes de la fuente Arial. Luego en el smartstyles vemos como seleccionar la nueva fuente:

Modificar texto de elemento de datos estándar

Caso: se modificar el texto o descripción de un elemento de datos estándar.

Solución: entrando a la transacción CMOD, elegimos del menú la opción “Pasar a” y elegimos: Ampliaciones Globales >Palabras Clave > Modificar. Seleccionamos el elemento de datos:

Luego de realizar los cambios, grabamos y nos pedirá OT.

Categorías:ABAP/4 Etiquetas: , , , ,

Evitar la ejecución de JOBs en paralelo

Caso: se desea programar un job, pero que no se ejecute otra instancia del mismo si éste se encuentra ya en ejecución.

Por ejemplo si tengo un job que se ejecuta cada 1 minuto pero hay veces que su ejecución tarda más que 1 minuto, entonces queremos evitar que se ejecute la próxima instancia del job antes que termine el job actual.

Solución: utilizamos el report RSBTONEJOB2 como “puente” para ejecutar como JOB nuestro programa:

1. Ante todo tenemos que tener definido el programa y la variante que vamos a ejecutar en el JOB.

En nuestro caso es el programa ZPRUEBA_ABAP y la variante es SOC_1000.

2. Ingresamos a la SE38 y ejecutamos el report RSBTONEJOB2. Allí debemos indicar:

– JOBNAME: el nombre del job que crearemos (puede ser igual al nombre del report)

– REPORT: Nombre del programa que vamos a ejecutar en el JOB (ver paso 1)

– VARIANT: variante del programa a ejecutar en el JOB (ver paso 1)

3. Ahora bien, con estos datos debemos crear en el programa RSBTONEJOB2 una variante que tenga el mismo nombre que la variante del REPORT del paso 1. Es importante este punto.

4. Vamos a la SM36 y programamos el JOB. Para el caso debemos respetar los nombres utilizados: El nombre del JOB y la variante

Definimos el paso, en este caso ponemos el nombre del programa RSBTONEJOB2, que funcionará como un “puente” al programa que queremos ejecutar en el JOB y la variante.

Definimos la condición de inicio (nosotros probaremos cada 1 minuto para forzar a que cancele la ejecución)

Grabamos el JOB para que se libere automáticamente (ya que nuestra condición de inicio fue “Inmediato”).

5. Vamos a ver su comportamiento en la SM37.

Vemos que se encuentra un JOB activo y al minuto intentó ejecutarse nuevamente y terminó, viendo el log del job terminado tenemos que:

Podemos ver los distintos mensajes que se generarán en el programa RSBTONEJOB2:

DEBUG de Smartforms

Caso: se desea debugguear un smartforms.

Solución: una forma práctica es la siguiente:

1. Ingresar a la transacción SMARTFORMS, indicar el nombre del formulario y presionar el botón “Verificar”

2. Aparecerá el módulo de funciones, presionamos “Visualizar”:

3. Buscamos el texto “PERFORM %GLOBAL_INIT.” Y hacemos doble click en el form

4. Finalmente allí buscar la sección de código donde queremos poner el break point.

MRM_INVOICE_DOCUMENT_DELETE – Eliminar documento factura preliminar (MIR7)

Caso: se desea eliminar un documento factura registrado en forma preliminar.

Solución: manualmente se puede hacer mediante la MIR4 (presionando F7) o la MIR7, utilizando la opción Documento de factura-borrar.

Pero queremos verlo por código, para ello usamos la MRM_INVOICE_DOCUMENT_DELETE, del grupo de funciones MRME:

REPORT zprueba_abap.

DATA: wa_rbkp TYPE mrm_rbkpv,
lv_belnr TYPE re_belnr,
lv_gjahr TYPE gjahr.

lv_belnr = ‘5105691484’.
lv_gjahr = ‘2016’.

CLEAR wa_rbkp.
wa_rbkp-belnr = lv_belnr.
wa_rbkp-gjahr = lv_gjahr.

CALL FUNCTION ‘MRM_INVOICE_DOCUMENT_DELETE’
EXPORTING
i_rbkpv = wa_rbkp
* I_LOCK = ‘ ‘
* TABLES
* T_DRSEG =
* CHANGING
* CT_ERRPROT =
EXCEPTIONS
invoice_locked = 1
invoice_not_found = 2
OTHERS = 3.

IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

Link: http://www.se80.co.uk/sapfms/m/mrm_/mrm_invoice_document_delete.htm

Usar parámetros de usuario – SU3

Caso: se requiere crear un parámetro Z de usuario y utilizarlo en un programa.

Solución: queremos usar un nuevo parámetro, de los que están en la SU3 cuando consultamos un usuario.

Para ello creamos el parámetro por la SM30, ingresando a la tabla TPARA

Actualizamos el valor en el usuario, ingresando por la SU3 o por la SU01:

Para recuperar los valores, hacemos un select a la tabla USR05:

DATA: lv_parva TYPE usr05-parva.

CLEAR lv_parva.

SELECT SINGLE parva
INTO lv_parva
FROM usr05
WHERE bname = p_uname
AND parid = ‘ZLOGIN_FN’.