SAP F-02 BDC生成票据类会计凭证

DATA: GS_BDCDATA TYPE BDCDATA,
           GT_BDCDATA TYPE TABLE OF BDCDATA,
           G_PARAMS   TYPE CTU_PARAMS,
           GS_MESS    TYPE BDCMSGCOLL,
           GT_MESS    TYPE TABLE OF BDCMSGCOLL.

FORM BDC_DYNPRO  USING PROGRAM DYNPRO.
  CLEAR GS_BDCDATA.
  GS_BDCDATA-PROGRAM  = PROGRAM.
  GS_BDCDATA-DYNPRO   = DYNPRO.
  GS_BDCDATA-DYNBEGIN = 'X'.
  APPEND GS_BDCDATA TO GT_BDCDATA.
ENDFORM.

FORM BDC_FIELD  USING FNAM FVAL.
  CLEAR GS_BDCDATA.
  GS_BDCDATA-FNAM = FNAM.
  GS_BDCDATA-FVAL = FVAL.
  APPEND GS_BDCDATA TO GT_BDCDATA.
ENDFORM.

FORM FRM_GET_MSGTXT  TABLES PT_MESS STRUCTURE BDCMSGCOLL
                   CHANGING P_MSG   TYPE      CHAR200 .

  DATA: L_MSGTXT TYPE STRING,
        LS_MESS  TYPE BDCMSGCOLL.

  LOOP AT PT_MESS INTO LS_MESS WHERE MSGTYP EQ 'E'.
    CLEAR L_MSGTXT.
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        MSGID                     = LS_MESS-MSGID
        MSGNR                     = LS_MESS-MSGNR
        MSGV1                     = LS_MESS-MSGV1
        MSGV2                     = LS_MESS-MSGV2
        MSGV3                     = LS_MESS-MSGV3
        MSGV4                     = LS_MESS-MSGV4
      IMPORTING
        MESSAGE_TEXT_OUTPUT       = L_MSGTXT .
    IF SY-TABIX > 1.
      CONCATENATE P_MSG ';' L_MSGTXT INTO P_MSG.
    ELSE.
      P_MSG = L_MSGTXT.
    ENDIF.
  ENDLOOP.

ENDFORM.

GS_BDCDATA-DYNBEGIN = 'T'.
GS_BDCDATA-FNAM = 'F-02'.
APPEND GS_BDCDATA TO GT_BDCDATA.

PERFORM BDC_DYNPRO  USING  'SAPMF05A'    '0100'.
PERFORM BDC_FIELD   USING  'BDC_CURSOR'  'RF05A-NEWUM'.
PERFORM BDC_FIELD   USING  'BDC_OKCODE'  '/00'.
PERFORM BDC_FIELD   USING  'BKPF-BLDAT'  SY-DATUM.
PERFORM BDC_FIELD   USING  'BKPF-BLART'  'SA'.
PERFORM BDC_FIELD   USING  'BKPF-BUKRS'  GS_ITEM-BUKRS.
PERFORM BDC_FIELD   USING  'BKPF-BUDAT'  P_BUDAT.
PERFORM BDC_FIELD   USING  'BKPF-BKTXT'  '银企联票据凭证(自动过账)'.
*PERFORM BDC_FIELD   USING  'BKPF-BKTXT'  P_LV_TXT.
PERFORM BDC_FIELD   USING  'BKPF-MONAT'  P_BUDAT+4(2).
PERFORM BDC_FIELD   USING  'BKPF-WAERS'  'CNY'.
PERFORM BDC_FIELD   USING  'FS006-DOCID' '*'.
PERFORM BDC_FIELD   USING  'RF05A-NEWBS' '09'.
PERFORM BDC_FIELD   USING  'RF05A-NEWKO' GS_ITEM-CPRNO.
PERFORM BDC_FIELD   USING  'RF05A-NEWUM' 'S'.
PERFORM BDC_FIELD   USING  'BDC_SUBSCR'  'SAPMF05A                                1300APPL_SUB_T'.
PERFORM BDC_FIELD   USING  'BDC_SUBSCR'  'SAPLSEXM                                0200APPL_SUB'.

PERFORM BDC_DYNPRO  USING  'SAPMF05A'    '2320'.
PERFORM BDC_FIELD   USING  'BDC_CURSOR'  'RF05A-NEWUM'.
PERFORM BDC_FIELD   USING  'BDC_OKCODE'  '/00'.
PERFORM BDC_FIELD   USING  'BSEG-WRBTR'  GS_ITEM-BILL_AMT.
*PERFORM BDC_FIELD   USING  'BSEG-ZFBDT'  P_BUDAT.
PERFORM BDC_FIELD   USING  'BSEG-ZFBDT'  P_DUE_DATE.
PERFORM BDC_FIELD   USING  'BSED-WDATE'  P_DRAW_DATE.
PERFORM BDC_FIELD   USING  'BSEG-SGTXT'  P_LV_TXT.
*PERFORM BDC_FIELD   USING  'BSED-WNAME'  'OFC'.
*PERFORM BDC_FIELD   USING  'BSED-WORT1'  'China'.
*PERFORM BDC_FIELD   USING  'BSED-REGIO'  '060'.
*PERFORM BDC_FIELD   USING  'BSED-WBZOG'  '建零片食撒厘魏输移氯'.
PERFORM BDC_FIELD   USING  'RF05A-NEWBS' '19'.
PERFORM BDC_FIELD   USING  'RF05A-NEWKO' GS_ITEM-CPRNO.
PERFORM BDC_FIELD   USING  'RF05A-NEWUM' 'A'.

PERFORM BDC_DYNPRO  USING  'SAPMF05A'    '0304'.
PERFORM BDC_FIELD   USING  'BDC_CURSOR'  'BSEG-WRBTR'.
PERFORM BDC_FIELD   USING  'BDC_OKCODE'  '=BU'.
PERFORM BDC_FIELD   USING  'BSEG-WRBTR'  GS_ITEM-BILL_AMT.
PERFORM BDC_FIELD   USING  'BSEG-SGTXT'  P_LV_TXT.

LOOP AT GT_BDCDATA INTO GS_BDCDATA WHERE FNAM = 'BSEG-WRBTR'.
    CONDENSE GS_BDCDATA-FVAL NO-GAPS.
    MODIFY GT_BDCDATA INDEX SY-TABIX FROM GS_BDCDATA TRANSPORTING FVAL.
ENDLOOP.
G_PARAMS-DISMODE = 'N'.
G_PARAMS-DEFSIZE = 'X'.
G_PARAMS-UPDMODE = 'S'.

CALL TRANSACTION 'F-02' USING GT_BDCDATA OPTIONS FROM G_PARAMS MESSAGES INTO GT_MESS.
PERFORM FRM_GET_MSGTXT TABLES GT_MESS CHANGING L_ERROR_MSG.

IF L_ERROR_MSG IS INITIAL.
    P_RTRES = 'S'.
    READ TABLE GT_MESS INTO GS_MESS WITH KEY MSGTYP = 'S' MSGID = 'F5' MSGNR = '312'.
    IF SY-SUBRC EQ 0.
       P_FIDOC_BELNR = GS_MESS-MSGV1.
    ENDIF.
ELSE.
    P_RTRES = 'F'.
    CONCATENATE '过账失败:' L_ERROR_MSG INTO P_RTMSG.
ENDIF.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容