Cuando estuve buscando tutoriales para la transacción SHDB no logre encontrar una que me explicara paso a paso la forma que debía trabajar una grabación, por esa razón quiero compartirles un tutorial que espero les ayude.
Transacción para hacer grabaciones: Se utiliza para grabar una serie de pasos y pantallas que se realizan al ejecutar una transacción
PASOS A PARA REALIZAR UNA GRABACIÓN
• Ir a la transacción SHDB.
• Haga clic en Grabación Nueva.
• Coloque el nombre con el que identificara la grabación e indique la transacción a utilizar, finalice presionando el botón “Iniciar Grabación”
• Ejecute la transacción de forma habitual, para este tutorial utilizare la F-37
Realizaremos una grabación de la transacción F-37 con el objetivo de generar una transacción “Z” que permita reducir la cantidad de tiempo invertido para realizar la actividad y minimizar la cantidad de errores en la operación.
Por ultimo debes guardar
• Al concluir observa que se te mostrara la grabación sobre los pasos que ejecutaste al operar la transacción F-37. Procede a guardar y regresar a la pantalla anterior.
• Selecciona la grabación que realizaste y crea el programa
Nota: el mandate tiene que estar abierto para que te deje crear el programa, de lo contrario deberás exportar e importar tu grabación a un ambiente que este abierto.
• Asigna un nombre al programa y le indicas que lo crearas tomando la grabación realizada.
• Asigna un título a tu programa y presiona ver código fuente
• Indica donde almacenaras tu programa, para aspectos prácticos del tutorial yo dejare el programa local.
Nota: Si le indicas un paquete te solicitara orden de transporte
• Observa que ya tenemos nuestro código fuente el cual modificaremos para poder tener una transacción “Z” de la transacción estándar.
• Antes de modificar el código le colocaremos una transacción a nuestro programa
Ingresa a la transacción SE93, coloca el código de la transacción que quieres crear, esta es la que llamara a tu programa cuando a quien la coloque en el Campo comandos.
Coloca una descripción y selecciona la opción como se muestra en la siguiente imagen.
Coloca el programa que creaste en los pasos anteriores y guarda , listo ya tienes tu transacción.
• Procede a ingresar a la transacción SE38, coloca tu programa. Observa los cambios que yo he agregado para ajustar el comportamiento de mi transacción (parámetros de entrada, variables y validación de permisos a la sociedad).
REPORT ZF_37_TUTORIAL
NO STANDARD PAGE HEADING LINE-SIZE 255.
*&---------------------------------------------------------------------*
*& PARAMETRO DE ENTRADA - PANTALLA
*&---------------------------------------------------------------------*
PARAMETERS:
P_BUKRS LIKE BKPF-BUKRS OBLIGATORY, " SOCIEDAD FI
P_WAERS LIKE BKPF-WAERS OBLIGATORY, " MONEDA OPERACIÓN
P_KURSF LIKE BKPF-KURSF, " TIPO DE CAMBIO
P_NEWKO LIKE KNA1-KUNNR OBLIGATORY, " CLIENTE
P_SGTXT LIKE BSEG-SGTXT, " TEXTO
P_WRBTR LIKE BSEG-WRBTR OBLIGATORY. " IMPORTE
*&---------------------------------------------------------------------*
*& VARIABLES GENERALES
*&---------------------------------------------------------------------*
DATA:
V_FECHA(10) TYPE C, " FECHA
V_MONAT(2) TYPE C, " PERIODO
V_BLART LIKE BKPF-BLART, " DOC. FI
V_WRBTR(15) TYPE C, " IMPORTE
V_KURSF(15) TYPE C, " TIPO CAMBIO
V_MENSAJE(60) TYPE C. "MENSAJE DE AUTORIZACIÓN
selection-screen comment /10(50) text-002.
selection-screen comment /10(83) text-003.
selection-screen comment /10(83) text-004.
*&---------------------------------------------------------------------*
*& PROGRAMA
*&---------------------------------------------------------------------*
" FUNCION DE CONVERSIÓN DE FECHA - SUBRUTINA
*&---------------------------------------------------------------------*
*& FORM FO_CONVERT_INPUT_DATE
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* -->P_CAMPO TEXT
*----------------------------------------------------------------------*
FORM FO_CONVERT_INPUT_DATE CHANGING P_CAMPO TYPE CHAR10.
DATA: LV_DATE TYPE DATUM.
MOVE P_CAMPO TO LV_DATE.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = LV_DATE
IMPORTING
DATE_EXTERNAL = P_CAMPO
EXCEPTIONS
DATE_INTERNAL_IS_INVALID = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* IMPLEMENT SUITABLE ERROR HANDLING HERE
ENDIF.
ENDFORM. "FO_CONVERT_INPUT_DATE
INCLUDE ZBDCRECX2_MP.
" Colocar modlo visual CTUMODE = A
"INCLUDE BDCRECX1.
INITIALIZATION.
FREE MEMORY.
START-OF-SELECTION.
*&---------------------------------------------------------------------*
*& OBJETO DE AUTORIZACIÓN
*&---------------------------------------------------------------------*
CONCATENATE `Usuario no cuenta con permisos para la sociedad ` P_BUKRS
INTO V_MENSAJE.
authority-check object 'F_BKPF_BUK'
id 'ACTVT' field '01'
id 'BUKRS' field P_BUKRS.
if sy-subrc ne 0.
MESSAGE V_MENSAJE TYPE 'E'.
exit.
else.
PERFORM OPEN_GROUP.
" ALAMACENAR FECHA DEL DIA EN VARIABLE Y PERIODO
V_FECHA = SY-DATUM.
MOVE V_FECHA+4(2) TO V_MONAT.
V_BLART = 'DN'.
WRITE P_WRBTR TO V_WRBTR.
WRITE P_KURSF TO V_KURSF.
" CONVERSIÓN DE FECHA
PERFORM FO_CONVERT_INPUT_DATE CHANGING V_FECHA.
" EJECUCIÓN DE TRANSACCIÓN F-37
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0113'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-ZUMSK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT'
V_FECHA. " FECHA OPERAC.
PERFORM BDC_FIELD USING 'BKPF-BLART'
V_BLART. " DOC. FI
PERFORM BDC_FIELD USING 'BKPF-BUKRS'
P_BUKRS. " SOCIEDAD FI
PERFORM BDC_FIELD USING 'BKPF-BUDAT'
V_FECHA. " FECHA OPERAC.
PERFORM BDC_FIELD USING 'BKPF-MONAT'
V_MONAT. " PERIODO
PERFORM BDC_FIELD USING 'BKPF-WAERS'
P_WAERS. " MONEDA OPERACIÓN
PERFORM BDC_FIELD USING 'BKPF-KURSF'
V_KURSF. " TIPO CAMBIO
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
P_NEWKO. " CLIENTE
PERFORM BDC_FIELD USING 'RF05A-ZUMSK'
'A'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0304'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
V_WRBTR. " IMPORTE
PERFORM BDC_FIELD USING 'BSEG-MWSKZ'
'A0'.
PERFORM BDC_FIELD USING 'BSEG-ZFBDT'
V_FECHA. " FECHA OPERAC.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
P_SGTXT. " TEXTO
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0304'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
V_WRBTR. " IMPORTE
PERFORM BDC_FIELD USING 'BSEG-MWSKZ'
'A0'.
PERFORM BDC_FIELD USING 'BSEG-ZFBDT'
V_FECHA. " FECHA OPERAC.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
P_SGTXT. " TEXTO
PERFORM BDC_TRANSACTION USING 'F-37'.
PERFORM CLOSE_GROUP.
endif.
• Ejecuta tu transacción y tendrás algo como esto. Transacción “Z” de la transacción estándar F-37.