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

BAPI_ACC_DOCUMENT_CHECK,

BAPI_ACC_DOCUMENT_POST ,

先说结论:两个BAPI会走校验,但是不走替代。

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

替代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 @ 2023-10-12 15:58  yangliu11223  阅读(587)  评论(0)    收藏  举报