Me 51
Me 51
control using the new line button on the GUI status *-----------------------------------------------------------------------------REPORT ybdc. *" Type declarations................................................... TYPES: BEGIN OF type_s_purord, state(1) TYPE c, knttp TYPE eban-knttp, eeind TYPE d, werks TYPE eban-werks, ekgrp TYPE eban-ekgrp, txz01 TYPE eban-txz01, menge TYPE eban-menge, meins TYPE eban-meins, matkl TYPE eban-matkl, preis TYPE eban-preis, kostl TYPE cobl-kostl, END OF type_s_purord. *" Data declarations................................................... DATA: fs_purord TYPE type_s_purord. DATA: fs_bdcdata TYPE bdcdata. DATA: w_line TYPE i VALUE 1, " Line Counter w_num(2) TYPE n, " Numeric w_loop(2) TYPE n, " Total number of Items w_var(20) TYPE c, " Variable Character w_date TYPE char10. " Date Variable * Internal table to hold data of Purchase Order Requisition DATA: t_purord LIKE STANDARD TABLE OF fs_purord. * Internal table to hold data of Screen Information DATA: t_bdcdata LIKE STANDARD TABLE OF fs_bdcdata. *START-OF-SELECTION EVENT START-OF-SELECTION. PERFORM upload. PERFORM prcreate. *&---------------------------------------------------------------------* *& Form upload *&---------------------------------------------------------------------* FORM upload . CALL METHOD cl_gui_frontend_services=>gui_upload EXPORTING filename = 'C:\Temp.notepad.txt' has_field_separator = 'X' CHANGING data_tab = t_purord EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 not_supported_by_gui = 17 error_no_gui = 18
OTHERS = 19. IF sy-subrc <> 0. WRITE:/ sy-subrc. ENDIF. ENDFORM. " FORM UPLOAD *&---------------------------------------------------------------------* *& Form PRCREATE *&---------------------------------------------------------------------* FORM prcreate . LOOP AT t_purord INTO fs_purord. IF fs_purord-state = 'H'. ADD 1 TO w_line. CLEAR w_num. PERFORM bdc_dynpro USING 'SAPMM06B' '0100'. PERFORM bdc_field USING 'EBAN-BSART' 'NB'. PERFORM bdc_field USING 'EBAN-KNTTP' fs_purord-knttp. WRITE fs_purord-eeind TO w_date. PERFORM bdc_field USING 'RM06B-EEIND' w_date. PERFORM bdc_field USING 'EBAN-WERKS' fs_purord-werks. PERFORM bdc_field USING 'EBAN-EKGRP' fs_purord-ekgrp. PERFORM bdc_field USING 'EBAN-MATKL' fs_purord-matkl. PERFORM bdc_field USING 'BDC_OKCODE' '=AB'. ENDIF. " IF FS_PURORD-STATE ... IF fs_purord-state = 'I'. w_num = w_num + 01. w_loop = w_loop + 1. IF w_num > 02. w_num = 02. PERFORM bdc_dynpro USING 'SAPMM06B' '0106'. * -------------> The following BDC_OKCODE will allow you to go to the second * line of the table control every time you press it. PERFORM bdc_field USING 'BDC_OKCODE' 'NP'. ENDIF. " IF W_NUM > 02 PERFORM bdc_dynpro USING 'SAPMM06B' '0106'. CONCATENATE 'EBAN-TXZ01' '(' w_num ')' INTO w_var. PERFORM bdc_field USING w_var fs_purord-txz01. CONCATENATE 'EBAN-MENGE' '(' w_num ')' INTO w_var. PERFORM bdc_field USING w_var fs_purord-menge. CONCATENATE 'EBAN-MEINS' '(' w_num ')' INTO w_var. PERFORM bdc_field USING w_var fs_purord-meins. PERFORM bdc_field USING 'BDC_OKCODE' '=KN'. PERFORM bdc_dynpro USING 'SAPMM06B' '0102'. PERFORM bdc_field USING 'EBAN-PREIS' fs_purord-preis. PERFORM bdc_field USING 'BDC_OKCODE' '=KN'. PERFORM bdc_dynpro USING 'SAPMM06B' '0505'. PERFORM bdc_field USING 'BDC_OKCODE' '=KWE'. PERFORM bdc_dynpro USING 'SAPLKACB' '0002'. PERFORM bdc_field USING 'COBL-KOSTL' fs_purord-kostl. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'. w_line = w_line + 1. ENDIF. " IF FS_PURORD-STATE ... CLEAR fs_purord. READ TABLE t_purord INTO fs_purord INDEX w_line. IF fs_purord-state = 'H' OR fs_purord-state IS INITIAL. PERFORM bdc_dynpro USING 'SAPMM06B' '0106'. PERFORM bdc_field USING 'BDC_OKCODE' '=MALL'. PERFORM bdc_dynpro USING 'SAPMM06B' '0106'. PERFORM bdc_field USING 'BDC_OKCODE' '=BU'. CALL TRANSACTION 'ME51' USING t_bdcdata MODE 'N'. REFRESH t_bdcdata. ENDIF. " IF FS_PURORD-STATE ... ENDLOOP. " LOOP AT T_PURORD... ENDFORM. " FORM PRCREATE *&---------------------------------------------------------------------* *& Form BDC_DYNPRO *----------------------------------------------------------------------* FORM bdc_dynpro USING value(pv_prog) TYPE any value(pv_dynp) TYPE any. CLEAR fs_bdcdata. fs_bdcdata-program = pv_prog. fs_bdcdata-dynpro = pv_dynp. fs_bdcdata-dynbegin = 'X'. APPEND fs_bdcdata TO t_bdcdata. ENDFORM. " FORM BDC_DYNPRO *&---------------------------------------------------------------------*
*&
Form BDC_FIELD
*----------------------------------------------------------------------* FORM bdc_field USING value(pv_fnam) TYPE any value(pv_fval) TYPE any. CLEAR fs_bdcdata. fs_bdcdata-fnam = pv_fnam. fs_bdcdata-fval = pv_fval. CONDENSE fs_bdcdata-fval. APPEND fs_bdcdata TO t_bdcdata. ENDFORM. " FORM BDC_FIELD