#1
|
|||
|
|||
Batch input
Hola tengo este batch input:
report ZDAGO_VL02 no standard page heading line-size 255. include bdcrecx1. parameters: dataset(132) lower case. *** DO NOT CHANGE - the generated data section - DO NOT CHANGE *** * * If it is nessesary to change the data section use the rules: * 1.) Each definition of a field exists of two lines * 2.) The first line shows exactly the comment * '* data element: ' followed with the data element * which describes the field. * If you don't have a data element use the * comment without a data element name * 3.) The second line shows the fieldname of the * structure, the fieldname must consist of * a fieldname and optional the character '_' and * three numbers and the field length in brackets * 4.) Each field must be type C. * *** Generated data section with specific formatting - DO NOT CHANGE *** data: begin of record, * data element: VBELN_VL VBELN_001(025), * data element: BLDAT BLDAT_002(010), * data element: WADAK WADAT_003(010), * data element: WAUHR WAUHR_004(008), * data element: GSGEW BTGEW_005(019), * data element: GEWEI GEWEI_006(003), * data element: ANZPK ANZPK_007(005), * data element: BLDAT BLDAT_008(010), * data element: WADAK WADAT_009(010), * data element: WAUHR WAUHR_010(008), * data element: GSGEW BTGEW_011(019), * data element: GEWEI GEWEI_012(003), * data element: ANZPK ANZPK_013(005), end of record. *** End generated data section *** start-of-selection. perform open_dataset using dataset. perform open_group. do. read dataset dataset into record. if sy-subrc <> 0. exit. endif. perform bdc_dynpro using 'SAPMV50A' '4004'. perform bdc_field using 'BDC_CURSOR' 'LIKP-VBELN'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_field using 'LIKP-VBELN' record-VBELN_001. perform bdc_dynpro using 'SAPMV50A' '1000'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_field using 'LIKP-BLDAT' record-BLDAT_002. perform bdc_field using 'BDC_CURSOR' 'LIKP-ANZPK'. perform bdc_field using 'LIKP-WADAT' record-WADAT_003. perform bdc_field using 'LIKP-WAUHR' record-WAUHR_004. perform bdc_field using 'LIKP-BTGEW' record-BTGEW_005. perform bdc_field using 'LIKP-GEWEI' record-GEWEI_006. perform bdc_field using 'LIKP-ANZPK' record-ANZPK_007. perform bdc_dynpro using 'SAPMV50A' '1000'. perform bdc_field using 'BDC_OKCODE' '=SICH_T'. perform bdc_field using 'LIKP-BLDAT' record-BLDAT_008. perform bdc_field using 'BDC_CURSOR' 'LIPS-MATNR(02)'. perform bdc_field using 'LIKP-WADAT' record-WADAT_009. perform bdc_field using 'LIKP-WAUHR' record-WAUHR_010. perform bdc_field using 'LIKP-BTGEW' record-BTGEW_011. perform bdc_field using 'LIKP-GEWEI' record-GEWEI_012. perform bdc_field using 'LIKP-ANZPK' record-ANZPK_013. perform bdc_transaction using 'VL02N'. enddo. perform close_group. perform close_dataset using dataset. Debo hacer un programa que mediante 2 parametros: p_guia like likp-vbeln. p_bultos like likp-anzpk. modifique esos valores usando esa transaccion antrior de batch input, que hice cree un nuevo programa agregue esos parámetros y copie ese mismo programa, no se si ma falta algo mas porque no me ejecuta bien, alguien me podria ayudar por favor?... |
#2
|
|||
|
|||
Declariones para que funcione el batch input
* Estructuratye_mensaje TYPE bdcmsgcoll. * TABLAS INTERNASTYPES tyt_mensaje TYPE STANDARD TABLE OF tye_mensaje, tyt_bdcdata TYPE STANDARD TABLE OF bdcdata, * TABLAS INTERNASDATA: gt_mensaje TYPE tyt_mensaje, " se muestra mensajes de error gt_bdcdata TYPE tyt_bdcdata, " Se graba las grabaciones FORM f_batch_input (se pasan los valores necesarios). DATA: lv_trans TYPE char4 VALUE 'FB03'. * Diferentes pantallas PERFORM f_fill_bdcdata USING: 'X' 'SAPMF05L' '0100', ' ' 'BDC_CURSOR' 'RF05L-GJAHR', ' ' 'BDC_OKCODE' '/00', ' ' 'RF05L-BELNR' pvi_documento, ' ' 'RF05L-BUKRS' pvi_sociedad, ' ' 'RF05L-GJAHR' ' '. * Se ejecuta el proceso por cada documento PERFORM f_call_transaction USING gt_bdcdata lv_trans CHANGING gt_mensaje. CLEAR gt_bdcdata. ENDFORM. "f_ba_contable FORM f_fill_bdcdata USING pvi_dynbegin TYPE c pvi_name TYPE c pvi_value TYPE c. DATA: le_bdcdata TYPE bdcdata. * "X" Indica si es una pantalla IF pvi_dynbegin = 'X'. CLEAR le_bdcdata. le_bdcdata-program = pvi_name. le_bdcdata-dynpro = pvi_value . le_bdcdata-dynbegin = pvi_dynbegin. APPEND le_bdcdata TO gt_bdcdata. ELSE. CLEAR le_bdcdata. le_bdcdata-fnam = pvi_name. le_bdcdata-fval = pvi_value. APPEND le_bdcdata TO gt_bdcdata. ENDIF. ENDFORM. "f_fill_bdcdata FORM f_call_transaction USING pvi_tipo_tran TYPE char4 CHANGING pte_messages TYPE tyt_mensaje. *A=Visualizar Todo *E=Visualizar pantallas sólo si hay errores *N=No visualizar pantallas DATA: lv_mode TYPE c VALUE 'N', lv_update TYPE c VALUE 'L'. CALL TRANSACTION pvi_tipo_tran USING gt_bdcdata MODE lv_mode UPDATE lv_update MESSAGES INTO pte_messages. ENDFORM. "f_call_transaction FORM f_show_messages USING pti_messages TYPE tyt_mensaje CHANGING pte_error TYPE tyt_error . DATA: lv_error TYPE c VALUE 'E', "Error lv_correcto TYPE c VALUE 'S', "Correcto lv_n_error TYPE char3 VALUE '126',"Número Error lv_n_advertencia TYPE char3 VALUE '060'."Número advertencia DATA: lv_msgid TYPE sy-msgid, lv_msgno TYPE sy-msgno, le_messages TYPE tye_mensaje, le_final_message TYPE message. DATA: le_error TYPE tye_error. LOOP AT pti_messages INTO le_messages. lv_msgid = le_messages-msgid. lv_msgno = le_messages-msgnr. CALL FUNCTION 'WRITE_MESSAGE' EXPORTING msgid = lv_msgid msgno = lv_msgno msgty = le_messages-msgtyp msgv1 = le_messages-msgv1 msgv2 = le_messages-msgv2 msgv3 = le_messages-msgv3 msgv4 = le_messages-msgv4 IMPORTING messg = le_final_message. IF sy-Subrc = 0. WRITE: / le_final_message ENDIF. ENDFORM. " f_show_messages f_call_transaction ejecuta la transacción que estas necesitando y la tabla cargada con el batch input . la rutina f_fill_bdcdata se encarga de hacer un append de las secuencias del batch input, la rutina f_show_messages se encarga de guardar los mensajes de error o éxito Pasos. 1 - f_fill_bdcdata 2 - f_call_transaction 3 - f_show_messages Bueno espero que te sirva. Saludos Diego G. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|