Es frecuente que los usuarios de desarrollo, programación o developer, como quieras llamarlos se hereden y se presten durante un proyecto SAP y a que al final no sepamos cuales había. O nos dediquemos todos a usar el mismo cuando tenemos varios.
Para encontrarlos nada mejor que consultar la tabla DEVACCESS con la SE16N o SE16 según el gusto del programador ABAP.
Trozos y retales de código de ABAP (SAP)que encuentro de interés. Tanto para tenerlos a mano en cualquier sitio como para compatirlos.
lunes, 30 de abril de 2012
miércoles, 25 de abril de 2012
MIRO, validación ítem. ¿Customer-Function o BADI?
Objetivo:
Realizar una validación propia en los ítems de la MIRO. Primero he probado con una ampliación vía CMOD. Me he creado el proyecto ZMIRO con MM08R002 (Exit de usuario para verificaciones de tolerancia) y he implementado la EXIT_SAPLMR1M_001. Cada vez que he tocado una posición me ha ido pasando, y con un MESSAGE i015(zmsg) WITH i_ydrseg-rblgp w_tarifa w_tarifa_x w_bstme me ha salido el error. Hacer notar que por cada posición pasaba 3 veces.Validar al grabar con BADI:
Pero al grabar sin tocar no pasaba por la validación. Después de buscar por internet la solución parece ir por aquí.
SE18 para buscar la BADI que nos interesa, en nuestro caso INVOICE_UPDATE.
SE19 para implementarla
Implementamos, y le damos nombre.
Activamos
Le damos a nueva (folio)
Le damos nombre, podemos poner el mismo y el texto corto. El último no campo no hace falta.
Al volver a la selección de enhacements, seleccionamos el nuestro.
Vamos a la pestaña Interface:
Clic en CHAGE_AT_SAVE
Y podemos implementar en la línea de la solución que habíamos encontrado en snc.sap.com.
method IF_EX_INVOICE_UPDATE~CHANGE_AT_SAVE.
DATA: lv_name_xblnr(30) TYPE c VALUE '(SAPLMRMP)RBKPV'.
FIELD-SYMBOLS: <fs_rbkpv> TYPE mrm_rbkpv.
ASSIGN (lv_name_xblnr) TO <fs_rbkpv>.
IF <fs_rbkpv> IS ASSIGNED.
<fs_rbkpv>-xblnr = 'VALUE'.
ENDIF.
endmethod.
Validar al grabar con Customer-Function.
Gracias a Laura que me ha dado otra posibilidad para no tener que implementar la BADI. Incluyendo en mi proyecto ZMIRO de la CMOD la LMR1M001 (Exit de usuario en la verificación de facturas logística). En EXIT_SAPLMRMP_010. Pasamos por ella cada vez que guardamos.martes, 20 de marzo de 2012
Debuggar salida de IDOC's. WE15
En el caso de la salida no podemos debuggar desde la WE19. Así que con la ayuda de JBlade y Laura lo hemos resuelto con un ejempo de facturas.
En el caso de INVOIC debemos tener el mensaje creado en la factura.
Y en Datos adicionales la modalidad de envío debe ser 1 o 2.
A partir de este momento podemos poner los break-point donde queramos de la función IDOC_OUTPUT_INVOIC o de los user-exit’s (grupo de funciones XEDF). Para poder debuggar usamos la WE15 – Proc.salida desde NAST. Es el programa RSNAST00.
A partir de la segunda vez, debermos marcar Volver a enviar.
miércoles, 14 de marzo de 2012
Debuggar entrada de IDOC's. WE19
Para realizar pruebas y poder debuggar la entrada de un IDOC tenemos la transacción WE19 - Herramienta test.
Aquí podemos coger un idoc ya creado con o sin errores. Podemos modificar datos para volver a ejecutarlo y tener un idoc nuevo. Menú IDOC->Test Proceso Entrada->Entrada Estándar.
También podemos hacerlo con Entrada módulo de funciones para verlo de forma visible o a partir del error Además podremos debuggar sólo si es de entrada.
viernes, 2 de marzo de 2012
Transportar traducciones de Mensajes (SE91).
Una vez hemos traducido una clase de mensajes desde la SE91, menú Pasar a->Traducciones nos encontramos con el problema de transportarlo ya que no nos pide orden.
Lo que yo hago es transportar toda la clase de mensaje y ya está. Desde la SE09 o la SE10 creo una orden de Workbench. Luego la abro y la edito, y añado R3TR; MSAG; Z_CLASE_MENSAJE. Estos datos como en otras ocasiones los podemos sacar si en la SE91vamos al menú Pasar a-> Entrada Catálogo Obj.
El resto del transporte es como siempre y habremos pasado toda la clase de mensajes con sus traducciones.
lunes, 27 de febrero de 2012
Impresión standard en ALV. Cabeceras y pies.
En un report con ALV, de aquellos de CALL METHOD gr_alvgrid->set_table_for_first_display tenía el botón standard de impresión y una cabecera própia fuera del ALV que el cliente quería listar. Para ello podemos seguir el ejemplo BCALV_GRID_01 donde se puede ver como añadir los eventos
- PRINT_TOP_OF_PAGE
- PRINT_END_OF_PAGE
- PRINT_TOP_OF_LIST
- PRINT_END_OF_LIST
lunes, 23 de enero de 2012
Error en SMARTFORM nada explícito.
La semana pasada nos encontramos con un error en un smartform Z (propio no estandard) que no era muy explícito.
Era el error SSFCOMPOSER152, Eventos ya definidos. Pero no indicaba claramente de que error se trataba ni en que parte del formulario pasaba.
![]() |
| SSFCOMPOSER 152 |
Después de ir depurando por aquí y por allá con Jesús llegamos a que para casos como este lo mejor es:
1. SE80. Seleccionamos Grupos de funciones.
2. Grupo de Funciones STXBC.
3. Desplegamos Subrutinas. Doble clic sobre ERR_WRITE.
4. Ponemos allí un punto de interrupción (Break-Point).
Lanzamos el smartform y allí e iremos pasando con todos los errores o avisos (warnings) al momento y con todos los parámetros del error y la posibilidad de ir viendo dónde se está produciendo el error.
Suscribirse a:
Entradas (Atom)












