您的位置:首页 > 其它

一个完整的BDC程序,仅供参考!(包括各种参数的配置)

2013-08-09 15:55 489 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐