Technical Articles
Tips SAP ABAP
- Tips SAP ABAP
- Insertar registros en tablas usando módulo de función SE16N_INTERFACE
- Creación de poblaciones
- Ejecutar transacciones sin permisos
- Traer listado de proveedores/acreedores
- Traer listado de clientes/deudores
- Transportar contenido de una tabla desde la SE09 o SE10
- Declarar un objeto de datos (data object) usando un tipo declarado dentro de una clase global
- Módulos de función para tareas varias
- Código para colocar la misma clave en diferentes mandantes de una misma instancia
- Especificar MS Word como editor en SmartForms y/o SAPScript
- Modificar estado orden de transporte
- Nombre del INCLUDE para el método de una clase
- Modificar código de un programa en cualquier ambiente
- Buscar sentencias en el código fuente dentro de programas
- Extender el tiempo de ejecución de un programa
- Descargar un programa
- Reinicializar memoria intermedia de un ALV
- Enlaces de interés
Tips SAP ABAP
En este documento quiero almacenar aquellas recomendaciones o sugerencias que sirven de utilidad para llevar a cabo diferentes labores específicas dentro de un sistema SAP.
Insertar registros en tablas usando módulo de función SE16N_INTERFACE
Usando el módulo de función SE16N_INTERFACE se pueden insertar registros en tablas transparentes.
- Ingresar a la transacción SE37 y colocar el nombre del módulo de función SE16N_INTERFACE.
- Dar clic en Ejecutar (F8)
y diligencial los campos I_TAB, I_EDIT y I_SAPEDIT, donde I_TAB es el nombre de la tabla transparente, I_EDIT y I_SAPEDIT lo que permiten es que la tabla se abra en modo de edición.
Creación de poblaciones
La creación de poblaciones se hace con la transacción SR10. En lugar de editar la tabla ADRCITY y ADRCITYT lo mejor es insertar los registros usando un LSMW que haga uso de la transacción SR10, en la imagen se muestra la ruta desde la SPRO.
Ejecutar transacciones sin permisos
Existen algunos módulos de función que permiten ejecutar una transacción cuando no se tienen privilegios, estos son:
RS_HDSYS_CALL_TC_VARIANT
C160_TRANSACTION_CALL
TRANSACTION_CALL_VIA_RFC
PLM_PS_EXECUTE_TRANSACTION
Otra manera es usando el modo debugg “/h” y poner break point de comando que se ejecuta cuando se se encuentre la sentencia AUTHORITY-CHECK y cambiar la variable sy-subrc a conveniencia.
Existe un módulo de función llamado AUTH_CHECK_TCODE, se coloca un Watchpoint en el objeto de datos sy-subrc, y si cambia a 4 o diferente de 0, modificarlos y dejarlo en 0.
Traer listado de proveedores/acreedores
Los siguientes módulos de función extraen información de los proveedores:
BBP_VENDOR_GETLIST: Trae un listado de proveedores, únicamente el código y el nombre.
BBP_VENDOR_GET_DATA2: Trae un listado completo con la información de los proveedores.
Traer listado de clientes/deudores
Los siguientes módulos de función extraen información de los clientes:
BAPI_CUSTOMER_GETLIST: Trae los datos generales del cliente y su dirección
Transportar contenido de una tabla desde la SE09 o SE10
Para transportar el contenido de una tabla entre mandantes desde las SE09 o SE10 se hace de la siguiente forma:
- Crear una orden de transporte en la transacción SE10
- Se da clic en crear (F6)
y se crea la orden de transporte ya sea de customizing o de workbench, después de creada se da doble clic sobre la orden generada y se crea un nuevo objeto.
- Después de colocar el registro se da doble clic sobre la línea y en la siguiente pantalla que aparece en el campo claves de tablas se coloca un “*”
Declarar un objeto de datos (data object) usando un tipo declarado dentro de una clase global
Para declarar un objeto de datos dentro de una clase global, primero se debe crear un data object con referencia a esa clase global, para entender de manera clara la manera de hacerlo seguir el siguiente vínculo el cual lo explica de manera detallada.
El contenido del enlace fue creado por Joyjit Ghosh.
Módulos de función para tareas varias
FMCT_WAIT_FOR_UPDATE: Espera un tiempo
C14Z_MESSAGES_SHOW_AS_POPUP: Muestra una ventana emergente con los mensajes obtenidos de la ejecución de un BDC o de una BAPI. En el enlace se puede ver un ejemplo de su uso.
HRCM_STRING_TO_AMOUNT_CONVERT: Convierte un número en cadena de caracteres en un monto.
Código para colocar la misma clave en diferentes mandantes de una misma instancia
DATA: ls_usr02 TYPE usr02.
SELECT SINGLE * FROM usr02 CLIENT SPECIFIED
INTO ls_usr02
WHERE mandt = ‘200’
AND bname = ‘UNAME’.
“Modificarla en 210
ls_usr02–mandt = ‘210’.
UPDATE usr02 CLIENT SPECIFIED FROM ls_usr02.
Especificar MS Word como editor en SmartForms y/o SAPScript
Ejecutar el programa RSCPSETEDITOR.
Modificar estado orden de transporte
Desde la SE38 se puede ejecutar el reporte RDDIT076, el cual permite modificar el estado de una orden de transporte.
Se da ejecutar y en la siguiente pantalla se da doble clic sobre la orden o tarea, y se edita cambiando el estado de R (Liberado) a D (Modificable).
Nombre del INCLUDE para el método de una clase
Para obtener los nombres de los INCLUDE de una clase se puede usar el módulo de función SEO_CLASS_GET_METHOD_INCLUDES.
Modificar código de un programa en cualquier ambiente
Para modificar el código fuente en cualquier ambiente, se deben llevar a cabo los siguientes pasos:
- Entrar el módulo de función TRINT_OBJECTS_CHECK_AND_INSERT
- Poner un Break Point de sesión en la sentencia IF system_client_role = ‘P’
- Ir al código que queremos modificar y dar clic en editar
- Desde el modo Debug, modificar las siguientes variables:
- system_client_role = P
- ls_s–curr_setting = X
- ls_s–cli_dep = X
- Ejecutar el programa (F8)
- Hacer la edición deseada
Buscar sentencias en el código fuente dentro de programas
Por medio del reporte RPR_ABAP_SOURCE_SCAN se puede hacer búsqueda de sentencias en el código de los programas ABAP que uno desee, acorde a los filtros de entrada.
Extender el tiempo de ejecución de un programa
Cuando se quiera extender el tiempo de ejecución de un programa se puede hacer de tres formas:
- Sentencia commit:
COMMIT WORK.
- Módulo de función TH_REDISPATCH:
CALL FUNCTION ‘TH_REDISPATCH’
EXPORTING
check_runtime = 0.
- Módulo de función SAPGUI_PROGRESS_INDICATOR:
CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
EXPORTING
text = sy-index.
Descargar un programa
Cuando se quiera descargar un programa ABAP se puede hacer uso del reporte REPTRAN desde la transacción SE38.
Reinicializar memoria intermedia de un ALV
Cuando en el ALV de la clase CL_SALV_TABLE no aparezcan las opciones de menú creadas o trabaje de manera inconsistente se debe ejecutar el programa BALVBUFDEL desde la SE38.
Muy interesante el post Fernando.
Excelente trabajo.
Good information Fernando.
Thanks.