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

发布时间 2023-10-12 16:01:42作者: yangliu11223

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.

 

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

校验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(完全凭证,回车不进,保存进)