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

本文通过具体的SAP BDC示例代码,详细展示了如何使用BDC进行数据的批量导入,包括设置程序、动态程序步骤及字段输入等关键操作。

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




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值