会计凭证修改行项目文本
使用BAPI FI_ITEMS_MASS_CHANGE或FARP_ITEMS_MASS_CHANGE,一个同步更新,一个异步更新
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-SGTXT = '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 = 'XX'. "过账码
IT_BUZTAB-UMSKZ = ''."特别总账标示
APPEND IT_BUZTAB .
IT_FLDTAB-FNAME = 'SGTXT'."要更改的字段
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
同时修改抬头和行项目文本
使用 CHANGE_DOCUMENT
先查询数据,再修改数据
SELECT *
FROM BKPF
INTO CORRESPONDING FIELDS OF TABLE T_BKPF
WHERE BUKRS = BUKRS
AND GJAHR = GJAHR
AND BELNR = BELNR.
IF SY-SUBRC NE 0 .
EXIT.
ENDIF.
SELECT *
FROM BSEG
INTO CORRESPONDING FIELDS OF TABLE T_BSEG
FOR ALL ENTRIES IN T_BKPF
WHERE BELNR = T_BKPF-BELNR
AND BUKRS = T_BKPF-BUKRS
AND GJAHR = T_BKPF-GJAHR.
LOOP AT T_BKPF.
T_BKPF-XREF1_HD = XREF1_HD.
MODIFY T_BKPF TRANSPORTING XREF1_HD .
ENDLOOP.
CALL FUNCTION 'CHANGE_DOCUMENT'
TABLES
T_BKDF = T_BKDF
T_BKPF = T_BKPF
T_BSEC = T_BSEC
T_BSED = T_BSED
T_BSEG = T_BSEG
T_BSET = T_BSET.
ENDFUNCTION.