SAP FICO BAPI_ACC_DOCUMENT_POST 创建会计凭证

本文介绍使用ABAP创建员工借款凭证的过程,包括通过BAPI检查凭证错误、创建财务凭证及涉及的数据结构。涵盖凭证头信息设置、行项目定义、金额分配及扩展字段配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系。

员工需要向公司借款,故走OA流程通过BAPI 创建员工借款凭证

BAPI: BAPI_ACC_DOCUMENT_CHECK  检查凭证有无错误

BAPI:BAPI_ACC_DOCUMENT_POST  创建财务凭证

DATA: is_import TYPE zfis_oa_loan_vou_create_import.
DATA: es_export TYPE zfis_oa_loan_vou_create_export.

DATA:
    ls_documentheader LIKE bapiache09,
    it_accountgl      LIKE TABLE OF bapiacgl09 WITH HEADER LINE,
    it_accounttax     LIKE TABLE OF bapiactx09 WITH HEADER LINE,
    it_criteria       LIKE TABLE OF bapiackec9 WITH HEADER LINE,
    it_valuefield     LIKE TABLE OF bapiackev9 WITH HEADER LINE,
    it_currencyamount LIKE TABLE OF bapiaccr09 WITH HEADER LINE,
    it_return         LIKE TABLE OF bapiret2   WITH HEADER LINE,
    is_return         TYPE bapiret2,
    it_return_2       LIKE TABLE OF bapiret2   WITH HEADER LINE,
    is_return_2       TYPE bapiret2,
    it_receivers      LIKE TABLE OF bdi_logsys WITH HEADER LINE,
    it_fica_it        LIKE TABLE OF bapiaccait WITH HEADER LINE,
    it_accountpayable LIKE TABLE OF bapiacap09 WITH HEADER LINE,
    it_paymentcard    LIKE TABLE OF bapiacpc09 WITH HEADER LINE,
    it_ext            LIKE TABLE OF bapiacextc WITH HEADER LINE,
    it_extension2     LIKE TABLE OF bapiparex  WITH HEADER LINE,
    ls_exten          LIKE zfisacc_exte.


*-------------------------------------------------------------
  CLEAR ls_documentheader.
  ls_documentheader-username   = sy-uname.                   "用户名
  ls_documentheader-header_txt = is_import-bktxt.            "抬头文本
  ls_documentheader-comp_code  = is_import-bukrs.            "公司代码
  ls_documentheader-doc_date   = is_import-bldat.            "凭证日期
  ls_documentheader-pstng_date = is_import-budat.            "过账日期
  ls_documentheader-fisc_year  = is_import-budat+0(4).       "会会计年度
  ls_documentheader-fis_period = is_import-budat+4(2).       "会计期间
  ls_documentheader-doc_type   = 'KA'.                       "凭证类型
  ls_documentheader-ref_doc_no = is_import-xblnr.            "凭证参考
*-------------------------------------------------------------
  "预留字段1 传入OA员工编号
  CLEAR it_accountpayable.
  it_accountpayable-itemno_acc = 1.
  it_accountpayable-vendor_no  = is_import-rev01.            "OA员工工号
  it_accountpayable-item_text  = is_import-sgtxt.            "行项目文本
  it_accountpayable-bline_date = is_import-bldat.            "到期日计算的基限日期
  APPEND it_accountpayable.
*-------------------------------------------------------------
  CLEAR it_accountgl.
  it_accountgl-itemno_acc     = 2.
  it_accountgl-gl_account     = is_import-hkont.             "总账科目
  it_accountgl-item_text      = is_import-sgtxt.             "行项目文本

  IF is_import-prctr IS NOT INITIAL .                       "利润中心

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = is_import-prctr
      IMPORTING
        output = it_accountgl-profit_ctr.
  ENDIF.

  APPEND it_accountgl.


*-------------------------------------------------------------
  CLEAR it_currencyamount.
  it_currencyamount-itemno_acc   = 1.
  it_currencyamount-currency     = is_import-waers.
  it_currencyamount-amt_doccur   = is_import-wrbtr.
  APPEND it_currencyamount.

  CLEAR it_currencyamount.
  it_currencyamount-itemno_acc   = 2.
  it_currencyamount-currency     = is_import-waers.
  it_currencyamount-amt_doccur   = - is_import-wrbtr.
  APPEND it_currencyamount.

*-------------------------------------------------------------
*& EXTENSION2 扩展字段增强部分
  "借方为H 过账码21   贷方为S 过账码 50
  CLEAR: ls_exten,it_extension2.
  ls_exten-posnr             = 1.                           "凭证行项目
  ls_exten-bschl             = '21'.                        "凭证行项目过账码
  it_extension2-structure    = 'ZFISACC_EXTE'.
  it_extension2-valuepart1   = ls_exten.
  APPEND it_extension2.


  CLEAR: ls_exten,it_extension2.
  ls_exten-posnr             = 2.                           "凭证行项目
  ls_exten-rstgr             = '1B4'.                       "凭证行项目原因代码
  ls_exten-bschl             = '50'.                        "凭证行项目过账码
  it_extension2-structure    = 'ZFISACC_EXTE'.
  it_extension2-valuepart1   = ls_exten.
  APPEND it_extension2.

*-------------------------------------------------------------
  CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
    EXPORTING
      documentheader = ls_documentheader
    TABLES
      accountgl      = it_accountgl
      accountpayable = it_accountpayable
      currencyamount = it_currencyamount
      return         = it_return
      extension2     = it_extension2.
  READ TABLE  it_return WITH KEY type = 'E'.
  IF sy-subrc = 0.
    LOOP AT it_return INTO is_return WHERE type = 'E'.

      CONCATENATE es_export-ifmsg is_return-message INTO es_export-ifmsg." 错误消息

    ENDLOOP.

    es_export-status = 'E'.  "状态

  ELSE.

    CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
      EXPORTING
        documentheader = ls_documentheader
      TABLES
        accountgl      = it_accountgl
        accountpayable = it_accountpayable
        currencyamount = it_currencyamount
        return         = it_return_2
        extension2     = it_extension2.
    READ TABLE it_return_2 WITH KEY type = 'E'.
    IF sy-subrc = 0.

      LOOP AT it_return_2 INTO is_return_2 WHERE type = 'E'.

        CONCATENATE es_export-ifmsg is_return_2-message INTO es_export-ifmsg." 错误消息

      ENDLOOP.


      es_export-status = 'E'.  "状态


    ELSE.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
      READ TABLE it_return_2 INTO is_return_2 WITH KEY type = 'S'.
      IF sy-subrc = 0.
        es_export-busno  = is_return_2-message_v2+0(10).       "凭证
        es_export-ifmsg =  '员工借款凭证创建成功'.             "消息
        es_export-status = 'S'.  "状态



      ENDIF.


    ENDIF.



  ENDIF.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值