✒️ABAP El Batch Input utilizando Call transaction
ABAP El Batch Input utilizando Call transaction
* & Report ZBDC_EXAMPLE *
* & *
* Y ------------------------------------------------ --------------------- *
* Y Ejemplo programa BDC, que actualiza el precio neto de artículo 00010 de un *
* Y la orden de compra en particular (EBELN). *
* & *
* Y ------------------------------------------------ --------------------- *
INFORME ZBDC_EXAMPLE NO ESTÁNDAR TÍTULO PÁGINA
LINE-TAMAÑO 132.
* Declaración de Datos
TABLAS: ekko, Ekpo.
TIPOS: COMIENZAN DE t_ekko,
ebeln TIPO ekko-ebeln,
WAERS TIPO Ekko-WAERS,
netpr TIPO Ekpo-netpr,
err_msg (73) de tipo C,
FIN DE t_ekko.
DATOS: it_ekko TABLA TIPO STANDARD DE t_ekko tamaño inicial 0,
wa_ekko TIPO t_ekko,
it_error TABLA TIPO STANDARD DE t_ekko tamaño inicial 0,
wa_error TIPO t_ekko,
it_success TABLA TIPO STANDARD DE t_ekko tamaño inicial 0,
t_ekko TIPO wa_success.
DATOS: w_textout GUSTO t100-texto.
DATOS: gd_update tipo I,
gd_lines tipo i.
* Se utiliza para almacenar datos de BDC
DATOS: BEGIN DE bdc_tab OCURRE 0.
CONTENER bdcdata ESTRUCTURA.
DATOS: FIN DE bdc_tab.
* Se utiliza para tiendas error información de módulo de función llamada de transacción
DATOS: BEGIN DE messtab OCURRE 0.
CONTENER bdcmsgcoll ESTRUCTURA.
DATOS: FIN DE messtab.
* ------------------------------------------------- ----------------------
* Declaración de la pantalla
SELECCIÓN DE PANTALLA DE COMENZAR bloque1 BLOQUE CON MARCO
TÍTULO texto-001. "Orden de compra Num
SELECT-OPCIONES: so_ebeln PARA ekko-ebeln OBLIGATORIO.
SELECCIÓN DE PANTALLA FIN DE BLOCK Bloque 1.
SELECCIÓN DE PANTALLA DE COMENZAR block2 BLOQUE CON MARCO
TÍTULO texto-002. "Nuevo valor NETPR
PARÁMETROS: p_newpr (14) TIPO c obligatoria. "COMO-Ekpo netpr.
SELECCIÓN DE PANTALLA FIN DE BLOQUE block2.
************************************************** **********************
* START-OF-SELECTION
COMIENZO DE LA SELECCIÓN.
* Recuperar datos de la tabla de orden de compra (EKKO)
Ekko SELECT ~ ekko ebeln ~ WAERS Ekpo ~ netpr
EN it_ekko TABLA
DESDE ekko COMO ekko INNER JOIN Ekpo COMO Ekpo
EN Ekpo ~ ebeln EQ ekko ~ ebeln
DONDE ekko ~ ebeln EN so_ebeln Y
Ekpo ~ ebelp EQ '10'.
************************************************** **********************
* FIN DE SELECCIÓN
FIN DE LA SELECCIÓN.
* Comprobar los datos se ha recuperado listo para su procesamiento
DESCRIBE TABLE it_ekko LÍNEAS gd_lines.
SI LE gd_lines 0.
* Mensaje en pantalla si no hay datos se ha recuperado
I003 MENSAJE (zp) CON 'Registros no encontrados "(001).
SALIR A LA PANTALLA 0.
ELSE.
* Actualización de datos maestros de cliente (texto a plazos)
LAZO EN it_ekko EN wa_ekko.
REALIZAR bdc_update.
ENDLOOP.
* Mostrar mensaje confirmando número de registros actualizado
SI gd_update GT 1.
MENSAJE I003 (zp) CON gd_update 'Registros actualizados "(002).
ELSE.
MENSAJE I003 'Record actualizado' (zp) CON gd_update (003).
TERMINARA SI.
* Ver informes Éxito
* **********************
* Salida tabla éxito
DESCRIBE TABLE it_success LÍNEAS gd_lines.
SI gd_lines GT 0.
* Visualización de informes resultado encabezados de columna
REALIZAR display_column_headings.
* Informe de resultados de Pantalla
REALIZAR display_report.
TERMINARA SI.
* Mostrar Notificar un error
* ********************
* Mesa Verificar errores
DESCRIBE TABLE it_error LÍNEAS gd_lines.
* Si existen errores a continuación informan errores de visualización
SI gd_lines GT 0.
* Informe de errores de visualización
REALIZAR display_error_headings.
REALIZAR display_error_report.
TERMINARA SI.
TERMINARA SI.
* Y ------------------------------------------------ --------------------- *
* & Form DISPLAY_COLUMN_HEADINGS
* Y ------------------------------------------------ --------------------- *
* encabezados de columna Display
* ------------------------------------------------- --------------------- *
Display_column_headings formulario.
ESCRITURA: 2 'Éxito Report' (014) COL_POSITIVE COLOR.
PASE.
ESCRITURA: 2 'Los siguientes registros actualizados con éxito:' (013).
ESCRITURA: / sy-uline (42).
FORMATO COL_HEADING COLOR.
ESCRITURA: / sy-vline,
(10) "Orden de Compra" (004), sy-vline,
(11) 'Old Netpr' (005), sy-vline,
(11) 'Nueva Netpr' (006), sy-vline.
ESCRITURA: / sy-uline (42).
ENDFORM. "DISPLAY_COLUMN_HEADINGS
* Y ------------------------------------------------ --------------------- *
* & Form BDC_UPDATE
* Y ------------------------------------------------ --------------------- *
* Rellenar tabla BDC y llame ME22 transacción
* ------------------------------------------------- --------------------- *
Bdc_update FORMULARIO.
REALIZAR Dynpro USO:
'X' 'SAPMM06E' '0105',
'' 'BDC_CURSOR' 'RM06E-BSTNR',
'' Wa_ekko-ebeln 'RM06E-BSTNR',
'' 'BDC_OKCODE' '/ 00', "código Aceptar
'X' 'SAPMM06E' '0120',
'' 'BDC_CURSOR' 'EKPO-NETPR (01)',
'' 'EKPO-NETPR (01)' p_newpr,
'' 'BDC_OKCODE' '= BU'. "Código Aceptar
* Llame transacción para actualizar el texto entrega al cliente
TRANSACCIÓN LLAMADA "ME22" USO bdc_tab modo de actualización 'N' 'S'
MENSAJES EN messtab.
* Compruebe si la actualización fue exitosa
SI sy-SUBRC EQ 0.
AÑADIR A 1 gd_update.
APPEND wa_ekko A it_success.
ELSE.
* Recuperar mensajes de error que aparecen durante la actualización de BDC
LAZO EN DONDE messtab msgtyp = 'E'.
* Construye mensaje real basado en información de regresar de transacción de llamada
FUNCIÓN DE LLAMADA 'MESSAGE_TEXT_BUILD'
EXPORTACIÓN
msgstr = messtab-msgstr
msgnr = messtab-msgnr
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
IMPORTACIÓN
message_text_output = w_textout.
ENDLOOP.
* Mesa de error Build listo para la salida
wa_error = wa_ekko.
wa_error-err_msg = w_textout.
APPEND wa_error A it_error.
CLARA: wa_error.
TERMINARA SI.
* Mesa de la fecha Borrar bdc
CLARA: bdc_tab.
ACTUALIZACIÓN: bdc_tab.
ENDFORM. "BDC_UPDATE
* ------------------------------------------------- -------------------- *
* FORMULARIO DYNPRO *
* ------------------------------------------------- -------------------- *
* Almacena los valores en la tabla bdc *
* ------------------------------------------------- -------------------- *
* -> DYNBEGIN *
* -> NOMBRE *
* -> * VALOR
* ------------------------------------------------- -------------------- *
FORMA DE USAR Dynpro valor de nombre dynbegin.
SI dynbegin = 'X'.
Bdc_tab CLEAR.
MOVIMIENTO: Nombre A bdc_tab-programa,
valor A bdc_tab-Dynpro,
'X' A bdc_tab-dynbegin.
APPEND bdc_tab.
ELSE.
Bdc_tab CLEAR.
MOVIMIENTO: Nombre A bdc_tab-FNAM,
valor A bdc_tab-FVAL.
APPEND bdc_tab.
TERMINARA SI.
ENDFORM. "DYNPRO
* Y ------------------------------------------------ --------------------- *
* & Form DISPLAY_REPORT
* Y ------------------------------------------------ --------------------- *
* Ver informes
* ------------------------------------------------- --------------------- *
Display_report FORMULARIO.
FORMATO COLOR COL_NORMAL.
* Loop en la tabla de datos
LAZO EN it_success EN wa_success.
ESCRITURA: / sy-vline,
(10) wa_success-ebeln, sy-vline,
(11), wa_success netpr MONEDA wa_success-WAERS, sy-vline,
(11) p_newpr, sy-vline.
CLARA: wa_success.
ENDLOOP.
ESCRITURA: / sy-uline (42).
ACTUALIZACIÓN: it_success.
FORMATO COLOR COL_BACKGROUND.
ENDFORM. "DISPLAY_REPORT
* Y ------------------------------------------------ --------------------- *
* & Form DISPLAY_ERROR_REPORT
* Y ------------------------------------------------ --------------------- *
* Los datos de visualización informe de errores
* ------------------------------------------------- --------------------- *
Display_error_report FORMULARIO.
LAZO EN it_error EN wa_error.
ESCRITURA: / sy-vline,
(10) wa_error-ebeln, sy-vline,
(11), wa_error netpr MONEDA wa_error-WAERS, sy-vline,
(73) wa_error-err_msg, sy-vline.
ENDLOOP.
ESCRITURA: / sy-uline (104).
ACTUALIZACIÓN: it_error.
ENDFORM. "DISPLAY_ERROR_REPORT
* Y ------------------------------------------------ --------------------- *
* & Form DISPLAY_ERROR_HEADINGS
* Y ------------------------------------------------ --------------------- *
* encabezamientos de informes de error de visualización
* ------------------------------------------------- --------------------- *
Display_error_headings formulario.
PASE.
ESCRITURA: 2 'Error Report' (007) COLOR COL_NEGATIVE.
PASE.
ESCRITURA: 2 'Los siguientes registros fallaron durante la actualización: "(008).
ESCRITURA: / sy-uline (104).
FORMATO COL_HEADING COLOR.
ESCRITURA: / sy-vline,
(10) "Orden de Compra" (009), sy-vline,
(11) 'Netpr' (010), sy-vline,
(73) "Mensaje de error" (012), sy-vline.
ESCRITURA: / sy-uline (104).
FORMATO COLOR COL_NORMAL.
ENDFORM. "DISPLAY_ERROR_HEADING
 
 
 
Sobre el autor
Publicación académica de Cesar Ismael Rodriguez Zorrilla, en su ámbito de estudios para la Carrera Consultor ABAP.
Cesar Ismael Rodriguez Zorrilla
Republica Dominicana - Legajo: MW21J
✒️Autor de: 120 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Cesar Rodriguez