美文网首页技术文SAPSAP收藏文章
FB02-会记凭证文本更改BAPI

FB02-会记凭证文本更改BAPI

作者: Mmm_余安 | 来源:发表于2018-09-25 16:23 被阅读13次

    对于会记凭证文本更改,前台Tcode:FB02,后台调用BAPI:FI_ITEMS_MASS_CHANGE
    有测试过更改文本字段:SGTXT,ZLSPR

    DATA:WA_BSEG LIKE BSEG,
    IT_BUZTAB TYPE TPIT_T_BUZTAB WITH HEADER LINE,
    IT_FLDTAB TYPE TPIT_T_FNAME WITH HEADER LINE,
    IT_ERRTAB TYPE TPIT_T_ERRDOC WITH HEADER LINE.

      WA_BSEG-ZLSPR = 'V'."你要更改的值
    
      IT_BUZTAB-BUKRS  = LS_BSEG-BUKRS.
      IT_BUZTAB-BELNR  = LS_BSEG-BELNR.
      IT_BUZTAB-GJAHR  = LS_BSEG-GJAHR.
      IT_BUZTAB-BUZEI  = LS_BSEG-BUZEI.
      IT_BUZTAB-BSCHL  = '31'. "过账码
      IT_BUZTAB-UMSKZ = ''."特别总账标示
      APPEND IT_BUZTAB .
    
      IT_FLDTAB-FNAME = 'ZLSPR'."要更改的字段
      IT_FLDTAB-AENKZ  = 'X'."给该字段打上标示
      APPEND IT_FLDTAB.
    

    *该函数是一行一行改的

      CALL FUNCTION 'FI_ITEMS_MASS_CHANGE'
        EXPORTING
          S_BSEG     = WA_BSEG
        IMPORTING
          ERRTAB     = IT_ERRTAB[]
        TABLES
          IT_BUZTAB  = IT_BUZTAB
          IT_FLDTAB  = IT_FLDTAB
        EXCEPTIONS
          BDC_ERRORS = 1
          OTHERS     = 2.
      IF SY-SUBRC <> 0.
      ENDIF
    
    IF IT_ERRTAB IS NOT INITIAL.
      READ TABLE IT_ERRTAB INDEX 1.*BDC消息處理.
      CLEAR L_TEXT.
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          ID        = IT_ERRTAB-ERR-MSGID
          NO        = IT_ERRTAB-ERR-MSGNR
          V1        = IT_ERRTAB-ERR-MSGV1
          V2        = IT_ERRTAB-ERR-MSGV2
          V3        = IT_ERRTAB-ERR-MSGV3
          V4        = IT_ERRTAB-ERR-MSGV4
        IMPORTING
          MSG       = L_TEXT
        EXCEPTIONS
          NOT_FOUND = 1
          OTHERS    = 2.
    
      CONCATENATE LS_BSEG-BELNR L_TEXT INTO L_TEXT.
      E_STATUS = 'E'.
      E_MESS = L_TEXT.
    
    ELSE.
      E_STATUS = 'S'.
      E_MESS = '成功!'.
      
    ENDIF.
    

    由于这个函数是一行一行改数据的,可能会出现凭证被锁,解决方法:拷贝原函数出来,原函数中的:

    call transaction 'FB02'  using    bdcdata
                             mode     bdcmode
                             update   'A'
                             messages into msgtab. 
    

    改为

    call transaction 'FB02'  using    bdcdata
                             mode     bdcmode
                             update   'S'
                             messages into msgtab. 
    

    同步更新,但是比较慢点 。

    相关文章

      网友评论

        本文标题:FB02-会记凭证文本更改BAPI

        本文链接:https://www.haomeiwen.com/subject/avjloftx.html