BTE PROCESS_00001120
회계전표 품목 텍스트 대체
구매입고, 구매송장 회계전표의 품목 텍스트에 "공급업체코드/자재내역" 표기
# 소스코드
DATA: LS_BKPF LIKE LINE OF T_BKPF,
LS_BSEG LIKE LINE OF T_BSEG,
LS_BSEC LIKE LINE OF T_BSEC.
FIELD-SYMBOLS: <LFS_BKPFSUB> LIKE LINE OF T_BKPFSUB,
<LFS_BSEGSUB> LIKE LINE OF T_BSEGSUB.
DATA: LV_TABIX TYPE SY-TABIX.
* 구매오더 정보
TYPES: BEGIN OF T_EKKO_EKPO,
EBELN TYPE EKPO-EBELN,
EBELP TYPE EKPO-EBELP,
TXZ01 TYPE EKPO-TXZ01,
LIFNR TYPE EKKO-LIFNR,
END OF T_EKKO_EKPO.
DATA: LV_LIFNR TYPE LFA1-LIFNR,
LV_LIFNR_T TYPE LFA1-NAME1,
LV_TXZ01 TYPE EKPO-TXZ01.
DATA: LT_EKPO TYPE SORTED TABLE OF T_EKKO_EKPO WITH UNIQUE KEY EBELN EBELP,
LS_EKPO LIKE LINE OF LT_EKPO.
DATA: LT_MAKT TYPE SORTED TABLE OF MAKT WITH UNIQUE KEY MATNR SPRAS,
LS_MAKT LIKE LINE OF LT_MAKT.
READ TABLE T_BKPF INTO LS_BKPF INDEX 1.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
*S> 구매 입고 및 송장의 GR/IR 품목 라인 및 부가세 라인 텍스트(SGTXT) 자동 설정
"GR/IR 및 기타 계정 텍스트 : 공급업체/자재내역
"부가세 텍스트 : 공급업체/공급업체명
IF LS_BKPF-GLVOR EQ 'RMRP' "송장
OR LS_BKPF-GLVOR EQ 'RMWE'. "입고
CLEAR: LV_LIFNR, LV_LIFNR_T.
"구매처 정보
READ TABLE T_BSEG INTO LS_BSEG WITH KEY KOART = 'K'.
IF SY-SUBRC EQ 0 AND LS_BSEG-LIFNR IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = LS_BSEG-LIFNR
IMPORTING
OUTPUT = LV_LIFNR
.
IF T_BSEC[] IS NOT INITIAL.
READ TABLE T_BSEC INTO LS_BSEC INDEX 1.
IF SY-SUBRC EQ 0.
MOVE LS_BSEC-NAME1 TO LV_LIFNR_T.
ENDIF.
ENDIF.
IF LS_BSEG-LIFNR IS NOT INITIAL AND LV_LIFNR_T IS INITIAL.
SELECT SINGLE
NAME1
FROM LFA1
WHERE LIFNR EQ @LS_BSEG-LIFNR
INTO @LV_LIFNR_T.
ENDIF.
CONDENSE: LV_LIFNR, LV_LIFNR_T.
ENDIF.
"구매오더 품목 텍스트
CLEAR LT_EKPO[].
DATA(LT_TMP) = T_BSEG[].
DELETE LT_TMP WHERE EBELN IS INITIAL OR EBELP IS INITIAL OR SGTXT IS NOT INITIAL.
SORT LT_TMP BY EBELN EBELP.
DELETE ADJACENT DUPLICATES FROM LT_TMP COMPARING EBELN EBELP.
IF LT_TMP[] IS NOT INITIAL.
SELECT
A~EBELN, A~EBELP, A~TXZ01, B~LIFNR
FROM EKPO AS A
INNER JOIN EKKO AS B ON A~EBELN EQ B~EBELN
FOR ALL ENTRIES IN @LT_TMP
WHERE A~EBELN EQ @LT_TMP-EBELN
AND A~EBELP EQ @LT_TMP-EBELP
INTO CORRESPONDING FIELDS OF TABLE @LT_EKPO.
ENDIF.
"회계전표의 자재코드 텍스트
CLEAR LT_MAKT[].
DATA(LT_TMP2) = T_BSEG[].
DELETE LT_TMP2 WHERE MATNR IS INITIAL OR SGTXT IS NOT INITIAL.
SORT LT_TMP2 BY MATNR.
DELETE ADJACENT DUPLICATES FROM LT_TMP2 COMPARING MATNR.
IF LT_TMP2[] IS NOT INITIAL.
SELECT
MATNR, SPRAS, MAKTX
FROM MAKT
FOR ALL ENTRIES IN @LT_TMP2
WHERE MATNR EQ @LT_TMP2-MATNR
INTO CORRESPONDING FIELDS OF TABLE @LT_MAKT.
ENDIF.
"BSEG-SGTXT 대체
LOOP AT T_BSEG INTO LS_BSEG WHERE SGTXT IS INITIAL.
LV_TABIX = SY-TABIX.
READ TABLE T_BSEGSUB ASSIGNING <LFS_BSEGSUB> WITH KEY TABIX = LV_TABIX.
IF SY-SUBRC NE 0.
CONTINUE.
ENDIF.
CASE LS_BSEG-KTOSL.
WHEN 'VST'. "부가세
IF LV_LIFNR IS NOT INITIAL AND LV_LIFNR_T IS NOT INITIAL.
CONCATENATE LV_LIFNR LV_LIFNR_T INTO <LFS_BSEGSUB>-SGTXT SEPARATED BY '/'.
ENDIF.
WHEN OTHERS.
CLEAR: LV_TXZ01, LS_EKPO, LS_MAKT.
IF LS_BSEG-EBELN IS NOT INITIAL AND LS_BSEG-EBELP IS NOT INITIAL. "PO기준 입고 및 송장의 경우 구매오더의 품목 텍스트 이용
READ TABLE LT_EKPO INTO LS_EKPO WITH TABLE KEY EBELN = LS_BSEG-EBELN
EBELP = LS_BSEG-EBELP.
IF SY-SUBRC EQ 0.
MOVE LS_EKPO-TXZ01 TO LV_TXZ01.
ENDIF.
ENDIF.
IF LV_TXZ01 IS INITIAL AND LS_BSEG-MATNR IS NOT INITIAL. "자재코드로 송장처리시 자재 마스터 내역 이용
READ TABLE LT_MAKT INTO LS_MAKT WITH TABLE KEY MATNR = LS_BSEG-MATNR
SPRAS = SY-LANGU.
IF SY-SUBRC NE 0.
READ TABLE LT_MAKT INTO LS_MAKT WITH TABLE KEY MATNR = LS_BSEG-MATNR
SPRAS = '3'.
IF SY-SUBRC NE 0.
READ TABLE LT_MAKT INTO LS_MAKT WITH TABLE KEY MATNR = LS_BSEG-MATNR
SPRAS = 'E'.
ENDIF.
ENDIF.
MOVE LS_MAKT-MAKTX TO LV_TXZ01.
ENDIF.
IF LV_LIFNR IS NOT INITIAL.
CONCATENATE LV_LIFNR LV_TXZ01 INTO <LFS_BSEGSUB>-SGTXT SEPARATED BY '/'.
ELSEIF LS_EKPO-LIFNR IS NOT INITIAL. "회계문서에 구매처가 없을 경우 PO의 구매처 정보 이용
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = LS_EKPO-LIFNR
IMPORTING
OUTPUT = LS_EKPO-LIFNR
.
CONDENSE LS_EKPO-LIFNR.
CONCATENATE LS_EKPO-LIFNR LV_TXZ01 INTO <LFS_BSEGSUB>-SGTXT SEPARATED BY '/'.
ELSE.
MOVE LV_TXZ01 TO <LFS_BSEGSUB>-SGTXT.
ENDIF.
ENDCASE.
ENDLOOP.
ENDIF.
*E> 구매송장의 GR/IR 품목 라인 및 부가세 라인 텍스트(SGTXT) 자동 설정
ABAP
'ABAP > 소스코드' 카테고리의 다른 글
[Function] Internal Table 엑셀 다운로드(XLSX 형식) (0) | 2023.07.11 |
---|---|
[Function] ZCM_EXCEL_UPLOAD - 필드 점검 및 변환 엑셀 업로드 (3) | 2023.07.10 |
[Report] ZBDC - 미리보기 기능 추가된 BDC 실행 프로그램 (0) | 2023.06.26 |
[Class] SALV Display - SALV 간단 출력 Class - ZCL_SALV_OUTPUT (0) | 2023.05.27 |
[Class] Progress Indicator 처리용 Common Class (0) | 2023.05.24 |
댓글