You are on page 1of 4

*&---------------------------------------------------------------------* *& Report ZBDC_PROGRAM * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT zbdc_program TABLES: sscrfields. DATA : P_BUT(100).

TYPES : BEGIN OF str, matnr TYPE matnr, qty TYPE CHAR17, werks TYPE CHAR4, END OF str. DATA : itab TYPE STANDARD TABLE OF str INITIAL SIZE 0, wa TYPE str. DATA : I_COUNT TYPE NUMC2, P_MATNR TYPE STRING, P_QTY TYPE STRING, P_WERKS TYPE STRING. DATA : I_MSG TYPE STRING. DATA : OK_CODE TYPE SY-UCOMM. PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'. "A: show all dynpros "E: show dynpro on error only "N: do not display dynpro .

SELECTION-SCREEN FUNCTION KEY 1. INITIALIZATION. MOVE 'PROCESS' TO SSCRFIELDS-FUNCTXT_01. P_BUT = 'NO'. AT SELECTION-SCREEN. IF OK_CODE = 'FC01'.

P_BUT = 'THE RECORDING HAS BEEN PROCESSED'. ELSE. CALL TRANSACTION 'SHDB'. P_BUT = 'THE RECORDING HAS BEEN PROCESSED'.

SSCRFIELDS-UCOMM = 'ONLI'. ENDIF. START-OF-SELECTION. WRITE P_BUT.

DATA: DATA:

bdcdata LIKE bdcdata

OCCURS 0 WITH HEADER LINE.

messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

DO 10 TIMES. wa-matnr = '99-110'. wa-qty = 10. wa-werks = '1100'. APPEND wa TO itab. wa-matnr = '99-110'. wa-qty = 2. wa-werks = '1100'. APPEND wa TO itab. wa-matnr = '99-110'. wa-qty = 7. wa-werks = '1100'. APPEND wa TO itab. ENDDO.

PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field

USING 'SAPMM06B' '0100'. USING 'BDC_CURSOR' 'EBAN-BSART'. USING 'BDC_OKCODE' '/00'.

LOOP AT ITAB INTO WA. I_COUNT = I_COUNT + 1. CONCATENATE 'EBAN-MATNR(' CONCATENATE 'EBAN-MENGE(' CONCATENATE 'EBAN-WERKS(' PERFORM bdc_dynpro PERFORM bdc_field *PERFORM bdc_field I_COUNT I_COUNT I_COUNT ')' INTO P_matnr. ')' INTO P_QTY. ')' INTO P_WERKS.

USING 'SAPMM06B' '0106'. USING 'BDC_CURSOR' 'EBAN-MENGE(01)'. USING 'BDC_OKCODE'

* PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field

'/00'. USING P_MATNR wa-matnr. USING P_QTY wa-QTY. USING P_WERKS wa-werks.

PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field

USING 'SAPMM06B' '0102'. USING 'BDC_CURSOR' 'EBAN-MENGE'. USING 'BDC_OKCODE' '/00'.

IF I_COUNT = 21. PERFORM bdc_dynpro TRY PAGE DOWN PERFORM bdc_field I_COUNT = 1. ENDIF. CLEAR WA. ENDLOOP. USING 'SAPMM06B' '0106'. "THIS IS THE SCREEN FOR DATA EN USING 'BDC_OKCODE' '=NP'.

PERFORM bdc_dynpro PERFORM bdc_field

USING 'SAPMM06B' '0102'. USING 'BDC_OKCODE' '=BU'.

CALL TRANSACTION 'ME51' USING bdcdata MODE ctumode UPDATE 'A' MESSAGES INTO messtab. CLEAR BDCDATA. REFRESH BDCDATA[].

LOOP AT messtab. CALL FUNCTION EXPORTING id lang no v1 v2 'FORMAT_MESSAGE' = = = = = messtab-msgid 'E' messtab-msgnr messtab-msgv1 messtab-msgv2

v3 = messtab-msgv3 v4 = messtab-msgv4 IMPORTING msg = P_matnr EXCEPTIONS not_found = 1 OTHERS = 2. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. WRITE: P_matnr. ENDLOOP. *----------------------------------------------------------------------* * Start new screen * *----------------------------------------------------------------------* form bdc_dynpro using program dynpro. CLEAR bdcdata. bdcdata-program = program. bdcdata-dynpro = dynpro. bdcdata-dynbegin = 'X'. APPEND bdcdata. ENDFORM. " *----------------------------------------------------------------------* * Insert field * *----------------------------------------------------------------------* FORM bdc_field USING fnam fval. CLEAR bdcdata. bdcdata-fnam = fnam. bdcdata-fval = fval. APPEND bdcdata. ENDFORM. "BDC_FIELD

You might also like