SAP ABAP KB11N 批量导入

场景

通过BAPI: BAPI_ACC_PRIMARY_COSTS_POST批量导入到KB11N

参数简介

在这里插入图片描述

抬头

抬头参数中大部分参数都可参照KB11N界面设置,其中变式字段VARIANT需要指定,货币一般都是固定的,视成本范围业务配置而定

  doc_header = VALUE #( co_area    = 'XXX'
                        docdate    = v_date_l
                        postgdate  = v_date_l
                        period     = ei_monat
                        variant    = '03SAP'
                        trans_curr = 'CNY'
                        username   = sy-uname ).

行项目

可参照KB11N界面查找所需字段

    doc_items = VALUE #( BASE doc_items
                       ( send_cctr  = <data>-kostl_f
                         trans_curr = doc_header-trans_curr
                         cost_elem  = <data>-kstar
                         value_tcur = <data>-wog001_f
                         rec_order  = <data>-aufnr ) ).

完整代码

  DATA: doc_header LIKE  bapidochdru12p,
        doc_no     LIKE  bapidochdru12p-doc_no,
        doc_items  TYPE TABLE OF  bapircitm,
        return     TYPE TABLE OF bapiret2,
        l_msg      TYPE msgtx.

  DATA(t_data) = eo_data[].
  DELETE t_data WHERE sel <> 'X'.
  DELETE t_data WHERE wog001_f IS INITIAL.
  CHECK t_data[] IS NOT INITIAL.

  doc_header = VALUE #( co_area    = 'YHGP'
                        docdate    = v_date_l
                        postgdate  = v_date_l
                        period     = ei_monat
                        variant    = '03SAP'
                        trans_curr = 'CNY'
                        username   = sy-uname ).


  LOOP AT t_data ASSIGNING FIELD-SYMBOL(<data>).

    doc_items = VALUE #( BASE doc_items
                       ( send_cctr  = <data>-kostl_f
                         trans_curr = doc_header-trans_curr
                         cost_elem  = <data>-kstar
                         value_tcur = <data>-wog001_f
                         rec_order  = <data>-aufnr ) ).

  ENDLOOP.
  CALL FUNCTION 'BAPI_ACC_PRIMARY_COSTS_CHECK'
    EXPORTING
      doc_header = doc_header
    TABLES
      doc_items  = doc_items
      return     = return.
  LOOP AT return INTO DATA(lwa_return) WHERE type CA 'AEX'.
    l_msg = l_msg && '/' && lwa_return-message.
  ENDLOOP.

  IF l_msg IS NOT INITIAL.

    LOOP AT eo_data ASSIGNING <data> WHERE sel = 'X'.
      <data>-light = '@5C@'.
      <data>-msg = l_msg.
    ENDLOOP.

  ELSE.

    CLEAR:return,doc_no.
    CALL FUNCTION 'BAPI_ACC_PRIMARY_COSTS_POST'
      EXPORTING
        doc_header      = doc_header
        ignore_warnings = 'X'
      IMPORTING
        doc_no          = doc_no
      TABLES
        doc_items       = doc_items
        return          = return.

    LOOP AT return INTO lwa_return WHERE type CA 'AEX'.
      l_msg = l_msg && '/' && lwa_return-message.
    ENDLOOP.
    IF l_msg IS INITIAL.
      COMMIT WORK.
    ELSE.
      ROLLBACK WORK.
    ENDIF.
    LOOP AT eo_data ASSIGNING <data> WHERE sel = 'X'.

      IF l_msg IS INITIAL.
        <data>-light = '@5B@'.
        <data>-msg =  '凭证创建成功'.
        <data>-belnr = doc_no.
      ELSE.
        <data>-light = '@5C@'.
        <data>-msg = '凭证创建失败'.
      ENDIF.

    ENDLOOP.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值