Estructura de Código para realizar un BATCH INPUT.
Estas variables siempre deben de ir. Tengan en cuenta siempre el orden del código y el standard.
Estas variables siempre deben de ir. Tengan en cuenta siempre el orden del código y el standard.
*********************************************
* DECLARACIÓN DE VARIABLES *
*********************************************
* DECLARACIÓN DE VARIABLES *
*********************************************
DATA:
gt_bdcdata TYPE TABLE OF bdcdata, " tabla guarda recording
gt_messtab TYPE TABLE OF bdcmsgcoll, " tabla que obtiene los mensajes
gs_bdcdata TYPE bdcdata, " linea de cabecera de la tabla que guarda el recording
gs_messtab TYPE bdcmsgcoll. "linea de cabecera de tabla que guarda el mensaje
DATA: BEGIN OF it_opt OCCURS 0.
INCLUDE STRUCTURE CTU_PARAMS.
DATA: END OF it_opt.
DATA:
v_mensaje TYPE string, " Se le asignarán los mensajes q se obtengan luego del batch
" para agregar a la tabla de mensajes.
v_msgid TYPE symsgid, " variable ID de mensaje
v_msgno TYPE symsgno. " variable Número de mensaje
**************************************************
NOTA:
En caso de que se quiera Realizar carga masiva, habría que agregar este código dentro de un loop
que se le hace a la tabla que contiene los registros.
Simplemente nos servirán estas dos líneas para tener todo claro.
Luego de realizar el recording a la tx solicitada, copiamos lo generado en nuestro código lo editamos
de la siguiente forma.
OJO: los datos de dynpro tiene que enviarse en el perform BDC_DYNPRO y los datos de cada movimiento que se hizo en dicha dynpro deben de enviarse en el perform BDC_FIELD.
*********************************************
* START OF SELECTION *
*********************************************
PERFORM bdc_dynpro USING 'SAPMP50A' '1100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RP50G-PERNR'.
REFRESH it_opt. " contiene las opciones de recording
it_opt-dismode = 'N'.
it_opt-updmode = 'S'.
it_opt-racmmit = 'X'.
it_opt-nobiend = 'X'.
it_opt-nobiend = SPACE.
CALL TRANSACTION 'TX' USING gt_bdcdata
OPTIONS FROM it_opt
MESSAGES INTO gt_messtab.
LOOP AT gt_messtab INTO gw_messtab. " Asigna los mensajes recibidos en la tabla gt_messtab
" a la tabla de mensajes que se retornará (T_MENSAJE)
v_msgid = gw_messtab-msgid.
v_msgno = gw_messtab-msgnr.
CALL FUNCTION 'K_MESSAGE_TRANSFORM' " función que obtiene el mensaje " enviándole como datos el mensaje ID
" (clase de mensaje) y el número de Mensaje
EXPORTING
par_msgid = v_msgid
par_msgno = v_msgno
IMPORTING
par_msgtx = v_mensaje.
t_mensaje-msgerr = v_mensaje. " se agrega el mensaje a la tabla de mensajes a mostrar.
*********************************************
* DECLARACIÓN DE SUB_RUTINA *
*********************************************
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0329 text
* -->P_0330 text
*----------------------------------------------------------------------*
form BDC_DYNPRO using program dynpro.
clear gs_bdcdata.
gs_bdcdata-program = program.
gs_bdcdata-dynpro = dynpro.
gs_bdcdata-dynbegin = 'X'.
append gs_bdcdata to gt_bdcdata .
endform. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form BDC_FIELD using fnam fval.
clear gs_bdcdata.
gs_bdcdata-fnam = fnam.
gs_bdcdata-fval = fval.
append gs_bdcdata to gt_bdcdata.
endform. " BDC_FIELD
gt_bdcdata TYPE TABLE OF bdcdata, " tabla guarda recording
gt_messtab TYPE TABLE OF bdcmsgcoll, " tabla que obtiene los mensajes
gs_bdcdata TYPE bdcdata, " linea de cabecera de la tabla que guarda el recording
gs_messtab TYPE bdcmsgcoll. "linea de cabecera de tabla que guarda el mensaje
DATA: BEGIN OF it_opt OCCURS 0.
INCLUDE STRUCTURE CTU_PARAMS.
DATA: END OF it_opt.
DATA:
v_mensaje TYPE string, " Se le asignarán los mensajes q se obtengan luego del batch
" para agregar a la tabla de mensajes.
v_msgid TYPE symsgid, " variable ID de mensaje
v_msgno TYPE symsgno. " variable Número de mensaje
**************************************************
NOTA:
En caso de que se quiera Realizar carga masiva, habría que agregar este código dentro de un loop
que se le hace a la tabla que contiene los registros.
Simplemente nos servirán estas dos líneas para tener todo claro.
Luego de realizar el recording a la tx solicitada, copiamos lo generado en nuestro código lo editamos
de la siguiente forma.
OJO: los datos de dynpro tiene que enviarse en el perform BDC_DYNPRO y los datos de cada movimiento que se hizo en dicha dynpro deben de enviarse en el perform BDC_FIELD.
*********************************************
* START OF SELECTION *
*********************************************
PERFORM bdc_dynpro USING 'SAPMP50A' '1100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RP50G-PERNR'.
REFRESH it_opt. " contiene las opciones de recording
it_opt-dismode = 'N'.
it_opt-updmode = 'S'.
it_opt-racmmit = 'X'.
it_opt-nobiend = 'X'.
it_opt-nobiend = SPACE.
CALL TRANSACTION 'TX' USING gt_bdcdata
OPTIONS FROM it_opt
MESSAGES INTO gt_messtab.
LOOP AT gt_messtab INTO gw_messtab. " Asigna los mensajes recibidos en la tabla gt_messtab
" a la tabla de mensajes que se retornará (T_MENSAJE)
v_msgid = gw_messtab-msgid.
v_msgno = gw_messtab-msgnr.
CALL FUNCTION 'K_MESSAGE_TRANSFORM' " función que obtiene el mensaje " enviándole como datos el mensaje ID
" (clase de mensaje) y el número de Mensaje
EXPORTING
par_msgid = v_msgid
par_msgno = v_msgno
IMPORTING
par_msgtx = v_mensaje.
t_mensaje-msgerr = v_mensaje. " se agrega el mensaje a la tabla de mensajes a mostrar.
*********************************************
* DECLARACIÓN DE SUB_RUTINA *
*********************************************
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0329 text
* -->P_0330 text
*----------------------------------------------------------------------*
form BDC_DYNPRO using program dynpro.
clear gs_bdcdata.
gs_bdcdata-program = program.
gs_bdcdata-dynpro = dynpro.
gs_bdcdata-dynbegin = 'X'.
append gs_bdcdata to gt_bdcdata .
endform. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form BDC_FIELD using fnam fval.
clear gs_bdcdata.
gs_bdcdata-fnam = fnam.
gs_bdcdata-fval = fval.
append gs_bdcdata to gt_bdcdata.
endform. " BDC_FIELD
0 comentarios:
Publicar un comentario