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
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.
- Luego de darl clic en Ejecutar (F8) y se modifican o crean los datos segun las necesidades
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.
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
New NetWeaver Information at SAP.com
Very Helpfull