본문 바로가기
ABAP/Function|Class

[Function] FI_ITEMS_MASS_CHANGE - 회계전표 품목 변경(FB09)

by name_text 2023. 7. 10.

FI_ITEMS_MASS_CHANGE

회계전표 품목 변경(FB09)

 

# 사용예시

REPORT YTEMP_SANDBOX.
TABLES BSEG.

PARAMETERS: P_BUKRS TYPE BKPF-BUKRS OBLIGATORY,
            P_BELNR TYPE BKPF-BELNR OBLIGATORY,
            P_GJAHR TYPE BKPF-GJAHR OBLIGATORY.
SELECT-OPTIONS: S_BUZEI FOR BSEG-BUZEI.

SELECTION-SCREEN SKIP.

PARAMETERS: P_SGTXT TYPE BSEG-SGTXT.


DATA: LS_BSEG   TYPE BSEG,
      LT_BUZTAB	TYPE TPIT_T_BUZTAB,
      LT_FLDTAB	TYPE TPIT_T_FNAME,
      LT_ERRTAB	TYPE TPIT_T_ERRDOC.

CLEAR: LT_BUZTAB[], LT_FLDTAB[], LT_ERRTAB[],
       LS_BSEG.

"#1. 값을 변경할 전표 품목 정보
SELECT
  BUKRS, BELNR, GJAHR, BUZEI,
  KOART, UMSKZ, BSCHL, MWART, MWSKZ
FROM BSEG
WHERE BUKRS EQ @P_BUKRS
  AND BELNR EQ @P_BELNR
  AND GJAHR EQ @P_GJAHR
  AND BUZEI IN @S_BUZEI
INTO CORRESPONDING FIELDS OF TABLE @LT_BUZTAB.
IF SY-SUBRC NE 0.
  EXIT.
ENDIF.

"#2. 값을 변경할 필드명
LT_FLDTAB = VALUE #( ( FNAME = 'SGTXT' ) ).

"#3. 변경할 값
LS_BSEG-SGTXT = P_SGTXT.

CALL FUNCTION 'FI_ITEMS_MASS_CHANGE'
  EXPORTING
    S_BSEG           = LS_BSEG
  IMPORTING
    ERRTAB           = LT_ERRTAB[]
  TABLES
    IT_BUZTAB        = LT_BUZTAB
    IT_FLDTAB        = LT_FLDTAB
  EXCEPTIONS
    BDC_ERRORS       = 1
    OTHERS           = 2
          .
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF LT_ERRTAB[] IS NOT INITIAL.
  ZCL_SALV_TEST=>DISPLAY( LT_ERRTAB ).
ELSE.
  WRITE:/ 'OK'.
ENDIF.
ABAP

댓글