一个完整的BDC程序,仅供参考!(包括各种参数的配置)
LOOP AT IT_BDC. PERFORM bdc_dynpro USING 'SAPMF05A' '0122'. PERFORM bdc_field USING: 'BDC_CURSOR' 'BKPF-WAERS', 'BDC_OKCODE' '=SL',
BDC的参数我们都比较熟悉了:可能有一个opt我们用得比较少,而且经常有问题的时候我们还需要F1去查看是否有办法可以解决。(例如由于commit work导致没有返回message的)
LOOP AT IT_BDC.
PERFORM bdc_dynpro USING 'SAPMF05A' '0122' .
PERFORM bdc_field USING : 'BDC_CURSOR' 'BKPF-WAERS' ,
'BDC_OKCODE' '=SL' ,
'BKPF-BLDAT' L_BUDAT ,
'BKPF-BLART' 'dz' ,
'BKPF-BUKRS' 'JP01' ,
'BKPF-BUDAT' L_BUDAT ,
'BKPF-WAERS' 'jpy' ,
'BKPF-XBLNR' IT_BDC -BELNR ,
'FS006-DOCID' '*' .
PERFORM bdc_dynpro USING 'SAPMF05A' '0710' .
PERFORM bdc_field USING : 'BDC_CURSOR' 'RF05A-XPOS1(03)' ,
'BDC_OKCODE' '/00' ,
'RF05A-AGBUK' 'JP01' ,
'RF05A-AGKOA' 'D' ,
'RF05A-AGUMS' 'A' ,
'RF05A-XNOPS' 'X' ,
'RF05A-XMULK' 'X' ,
'RF05A-XPOS1(01)' ' ' ,
'RF05A-XPOS1(03)' 'X' .
PERFORM bdc_dynpro USING 'SAPMF05A' '0609' .
PERFORM bdc_field USING : 'BDC_CURSOR' 'RF05A-XNOPS(01)' ,
'BDC_OKCODE' '=GO' ,
'RF05A-AGKON(01)' '0001027941' ,
'RF05A-AGKOA(01)' 'S' ,
'RF05A-XNOPS(01)' 'X' .
PERFORM bdc_dynpro USING 'SAPMF05A' '0731' .
PERFORM bdc_field USING : 'BDC_CURSOR' 'RF05A-SEL01(02)' ,
'BDC_OKCODE' '/00' ,
'RF05A-SEL01(01)' IT_BDC -BELNR ,
'RF05A-SEL01(02)' IT_BDC -BELNR1 ,
'RF05A-SEL01(03)' IT_BDC -BELNR2 ,
'RF05A-SEL01(04)' IT_BDC -BELNR3 ,
'RF05A-SEL01(05)' IT_BDC -BELNR4 ,
'RF05A-SEL01(06)' IT_BDC -BELNR5 .
PERFORM bdc_dynpro USING 'SAPMF05A' '0731' .
PERFORM bdc_field USING : 'BDC_CURSOR' 'RF05A-SEL01(01)' ,
'BDC_OKCODE' '=PA' .
PERFORM bdc_dynpro USING 'SAPDF05X' '3100' .
PERFORM bdc_field USING : 'BDC_OKCODE' '=BU' ,
'BDC_SUBSCR' 'SAPDF05X 6102PAGE' ,
'BDC_CURSOR' 'RF05A-ABPOS' ,
'RF05A-ABPOS' '1' .
CALL TRANSACTION 'F-30' USING BDCDATA
MODE P_MODE
MESSAGES INTO L_BDCMSG .
* IF SY-SUBRC EQ 0.
* COMMIT WORK AND WAIT.
* ELSE.
* ROLLBACK WORK.
* ENDIF.
WAIT UP TO p_wait SECONDS .
READ TABLE GT_LOG INTO WA_LOG WITH KEY BELNR = IT_BDC -BELNR .
LOOP AT L_BDCMSG .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = L_BDCMSG -MSGID
msgnr = L_BDCMSG -MSGNR
msgv1 = L_BDCMSG -MSGV1
msgv2 = L_BDCMSG -MSGV2
msgv3 = L_BDCMSG -MSGV3
msgv4 = L_BDCMSG -MSGV4
IMPORTING
message_text_output = WA_LOG -MSG .
IF L_BDCMSG -MSGTYP EQ 'S' .
CHECK L_BDCMSG -MSGID EQ 'F5' AND L_BDCMSG -MSGNR EQ '312' .
WA_LOG -AUGBL = L_BDCMSG -MSGV1 .
ENDIF .
ENDLOOP .
LOOP AT GT_LOG WHERE BELNR = IT_BDC -BELNR .
IF L_BDCMSG -MSGTYP EQ 'S' .
CHECK L_BDCMSG -MSGID EQ 'F5' AND L_BDCMSG -MSGNR EQ '312' .
MODIFY GT_LOG FROM WA_LOG TRANSPORTING AUGBL .
ELSE .
CHECK L_BDCMSG -MSGTYP EQ 'E' .
MODIFY GT_LOG FROM WA_LOG TRANSPORTING MSG .
ENDIF .
ENDLOOP .
CLEAR BDCDATA[] .
CLEAR L_BDCMSG[] .
ENDLOOP.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
* IF fval <> nodata.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
* ENDIF.
ENDFORM. "bdc_field
更多推荐
所有评论(0)