SAP财务过账不走替代解决方法

BAPI_ACC_DOCUMENT_CHECK,

 BAPI_ACC_DOCUMENT_POST ,

会走校验,但是不走替代。

*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

替代substitute

BADI  BADI_ACC_DOCUMENT   IF_EX_ACC_DOCUMENT~CHANGE

复制代码
    DATA : lt_bkpf   TYPE TABLE OF bkpf,
           ls_bkpf   TYPE          bkpf,
           ls_c_bkpf TYPE          bkpf,
           lt_bseg   TYPE TABLE OF bseg,
           ls_bseg   TYPE          bseg,
           ls_c_bseg TYPE          bseg.
*--------------------------------------------------------------------*
    MOVE-CORRESPONDING c_acchd TO ls_bkpf.
    READ TABLE c_accit INTO DATA(ls_accit) INDEX 1.
    MOVE-CORRESPONDING ls_accit TO ls_bkpf.
    LOOP AT c_acccr INTO DATA(ls_acccr) WHERE curtp = '00'.
      ls_bkpf-waers = ls_acccr-waers.
      EXIT.
    ENDLOOP.

*---substitute header
    CALL FUNCTION 'FI_SUBSTITUTION_HEADER'
      EXPORTING
        i_bkpf = ls_bkpf
      IMPORTING
        e_bkpf = ls_c_bkpf.
    MOVE-CORRESPONDING ls_c_bkpf TO c_acchd.

*---substitute item
    LOOP AT c_accit INTO ls_accit.
      MOVE-CORRESPONDING ls_accit TO ls_bseg.
      CALL FUNCTION 'FI_SUBSTITUTION_ITEM'
        EXPORTING
          i_bkpf  = ls_bkpf
          i_bseg  = ls_bseg
          i_event = CONV rf05a-event( '02' )
        IMPORTING
          e_bseg  = ls_c_bseg.
      MOVE-CORRESPONDING ls_c_bseg TO ls_accit.
      MODIFY c_accit FROM ls_accit.
    ENDLOOP.

*---substitute document(完全凭证)
    CLEAR:lt_bkpf,lt_bseg.
    lt_bkpf = VALUE #( ( ls_c_bkpf ) ).
    lt_bseg = CORRESPONDING #( c_accit ).

    CALL FUNCTION 'FI_SUBSTITUTION_DOC'
      TABLES
        io_xbseg = lt_bseg
        io_xbkpf = lt_bkpf.
复制代码

 

*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

校验validation

上图里走校验。

 

上图3,先走check如果有标准报错,则退出function AC_DOCUMENT_CREATE,回到上图1,不走header校验,在perform check_cobl中走item校验。

             如果没有标准报错,则在上图3 function AC_DOCUMENT_CREATE中走perform document_create using split, 然后走下图1调用FI_DOCUMENT_PROJECT,perform document_validation中走 FI_VALIDATION_HEADER,FI_VALIDATION_ITEM,FI_VALIDATION_DOC(完全凭证,回车不进,保存进)

 

posted @   yangliu11223  阅读(314)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示