ABAP FB01 BAPI过账

获取到需要过账的数据之后,可以用来批量常规过账,也挺灵活的,只是有一些字段如果前台过账没有的话,记账的时候也不会记进去,传值的时候要注意。常规过账的话还是蛮好用的

*获取屏幕字段名称然后依次传值就行
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-BUKRS' zsfi_g073_01-bukrs. "公司代码
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-XBLNR' zsfi_g073_01-maino. "参考
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-BLDAT' lv_budat.           "凭证日期
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-BUDAT' lv_budat.           "过账日期
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-WAERS' zsfi_g073_01-waers. "货币
PERFORM ftpost_field TABLES lt_ftpost USING 'K' '1' 'BKPF-KURSF' zsfi_g073_01-kursf. "汇率

PERFORM prepare_acc_doc_item_01 TABLES lt_ftpost.

CALL FUNCTION 'POSTING_INTERFACE_START'
  EXPORTING
    i_function         = 'C'
    i_keep             = 'X'
  EXCEPTIONS
    client_incorrect   = 1
    function_invalid   = 2
    group_name_missing = 3
    mode_invalid       = 4
    update_invalid     = 5
    OTHERS             = 6.

CALL FUNCTION 'POSTING_INTERFACE_DOCUMENT'
  EXPORTING
    i_tcode                  = 'FB01'
  IMPORTING
    e_msgid                  = sy-msgid
    e_msgno                  = sy-msgno
    e_msgty                  = sy-msgty
    e_msgv1                  = sy-msgv1
    e_msgv2                  = sy-msgv2
    e_msgv3                  = sy-msgv3
    e_msgv4                  = sy-msgv4
  TABLES
    t_blntab                 = lt_blntab
    t_ftpost                 = lt_ftpost
    t_fttax                  = lt_fttax
  EXCEPTIONS
    account_missing          = 1
    company_code_missing     = 2
    posting_key_invalid      = 3
    posting_key_missing      = 4
    record_type_invalid      = 5
    transaction_code_invalid = 6
    amount_format_error      = 7
    too_many_line_items      = 8
    company_code_invalid     = 9
    screen_not_found         = 10
    no_authorization         = 11
    OTHERS                   = 12.

IF sy-msgty CA 'EA'.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
  READ TABLE lt_blntab INTO ls_blntab INDEX 1.
  IF sy-subrc = 0.
    zsfi_g073_01-belnr = ls_blntab-belnr.   "凭证号
  ENDIF.
ENDIF.

FORM ftpost_field  TABLES  lt_ftpost STRUCTURE ftpost
                   USING lv_stype lv_count lv_fnam lv_fval.

  DATA: ls_ftpost  TYPE ftpost.

  ls_ftpost-stype = lv_stype.
  ls_ftpost-count = lv_count.
  ls_ftpost-fnam  = lv_fnam.
  ls_ftpost-fval  = lv_fval.
  CONDENSE ls_ftpost-fval.
  APPEND ls_ftpost TO lt_ftpost.

ENDFORM.

FORM prepare_acc_doc_item_01  TABLES lt_ftpost STRUCTURE ftpost.
  DATA: lv_posnr  TYPE posnr_acc.

  " 借方
  lv_posnr = lv_posnr + 1.

  PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'RF05A-NEWBS' '40'.
  PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'RF05A-NEWKO' zsfi_g073_01-saknr.
  PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'BSEG-WRBTR' zsfi_g073_01-money.
  PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'BSEG-RSTGR' zsfi_g073_01-rstgr.

  " 贷方
  lv_posnr = lv_posnr + 1.

  PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'RF05A-NEWBS' '11'.
  PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'RF05A-NEWKO' zsfi_g073_01-kunnr.
  PERFORM ftpost_field TABLES lt_ftpost USING 'P' lv_posnr 'BSEG-WRBTR' zsfi_g073_01-money.
ENDFORM.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值