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




Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐