Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
99 KiB
type, title, description, resource, tags, generated, status, x-package, x-changed-on, x-tables-read, x-tables-write, x-calls, x-code-hash, x-unit-count, x-chunk-count, x-declaration-count
| type | title | description | resource | tags | generated | status | x-package | x-changed-on | x-tables-read | x-tables-write | x-calls | x-code-hash | x-unit-count | x-chunk-count | x-declaration-count | |||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| abap-program | ZFIR0110_DOC | 전자세금계산서 기반 매입 전표를 실제로 입력·전기하는 다이얼로그 화면이다. ZFIR0100 에서 호출되며, 계정·지급조건·사업장·전기키 등에 F4 도움말을 제공하고 입력값을 검증한 뒤 전표 헤더(SET_BKPF)와 아이템(SET_BSEG, 228줄)을 구성해 Z_FI_DOCUMENT_POSTING 으로 전기한다. 화면 모듈 USER_COMMAND_0100(305줄)이 사용자 액션 전체를 처리한다. | abap://ZFIR0110_DOC |
|
|
stable |
|
|
|
7012097f655a81b26e43a57b0c39c2474ffca1f88890e0ed117cef34fcce5324 | 42 | 41 | 41 |
업무 목적
전자세금계산서 기반 매입 전표를 실제로 입력·전기하는 다이얼로그 화면이다. ZFIR0100 에서 호출되며, 계정·지급조건·사업장·전기키 등에 F4 도움말을 제공하고 입력값을 검증한 뒤 전표 헤더(SET_BKPF)와 아이템(SET_BSEG, 228줄)을 구성해 Z_FI_DOCUMENT_POSTING 으로 전기한다. 화면 모듈 USER_COMMAND_0100(305줄)이 사용자 액션 전체를 처리한다.
주 흐름
- 호출 파라미터로 대상 세금계산서 데이터를 세팅한다 (SET_DATA)
- 화면 0100 을 열고 초기 데이터를 채운다 (INIT_DATA)
- 계정·지급조건·사업장·전기키·은행유형에 F4 도움말을 제공한다 (SET_F4_HKONT / SET_F4_ZTERM / SET_F4_BUPLA / SET_F4_BSCHL / SET_F4_BVTYP)
- 입력값을 검증하고 계정·거래처 텍스트를 채운다 (INPUT_CHECK / GET_HKONT_TEXT / SET_NAME / SET_ZTERM)
- 금액을 합산하고 지급기준일을 설정한다 (SUM_AMT / SET_ZFBDT)
- 사용자 액션(저장/전기/취소)을 처리한다 (USER_COMMAND_0100)
- 전표 헤더·아이템을 구성해 전기한다 (CHECK_DATA → SET_BKPF → SET_BSEG → POST → Z_FI_DOCUMENT_POSTING)
핵심 내부테이블
GT_ITEM— 입력 중인 전표 아이템 (채움: INIT_DATA, SET_BSEG / 소비: POST)
테이블 / 외부 호출
- read: A003, J_1BBRANCH, KONP, LFA1, LFB1, SKAT, T001, T007A, T020, T052, TGSBT, THKON, ZDTV3T_AP_EXT, ZDTV3T_AP_HEAD
- write: ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D
- 외부 호출: CONVERSION_EXIT_ALPHA_INPUT, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, FI_F4_ZTERM, FI_FIND_PAYMENT_CONDITIONS, HELP_VALUES_GET_NO_DD_NAME, HELP_VALUES_GET_WITH_TABLE, OXT_MESSAGE_TO_POPUP, READ_HAUPTBUCH_TEXT, RF_CPD_DATEN_BEARBEITEN, VRM_SET_VALUES, ZFIR0130, Z_FI_DOCUMENT_POSTING
로직 조각 (41건 / unit 20개)
LLM 이 코드에서 골라낸 업무 로직 단위다. 조각마다 소스 원문과 자연어 설명을 함께 싣는다 — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. 테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.
FORM SET_DATA — ZFIR0110_DOC_F01 L7-L17 (11줄)
호출 프로그램이 ABAP 메모리(ID 'GT_TABLE')에 넘긴 전표 데이터를 IMPORT 하고 비어 있으면 화면을 종료하는 초기화 루틴이다.
이 unit 의 조각 1개가 6/11줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[interface] 메모리 ID 'GT_TABLE' 에서 호출 프로그램이 넘긴 전표 항목 테이블을 IMPORT 하고 첫 행이 없으면 LEAVE TO SCREEN 0 으로 화면을 닫는다.
10| IMPORT GT_TABLE FROM MEMORY ID 'GT_TABLE'.
11|
12| READ TABLE GT_TABLE INDEX 1.
13| IF SY-SUBRC <> 0.
14| LEAVE TO SCREEN 0.
15| ENDIF.
- EN: Import the document table passed by the caller via ABAP memory ID 'GT_TABLE' and leave the screen when it is empty.
- SAP 객체: GT_TABLE
- 업무 키워드: 메모리 IMPORT, 프로그램 간 데이터 전달, 전표 데이터, 화면 종료
- English: ABAP Memory, IMPORT, Data Handover
- 정의부(복사 시 함께 필요):
ZDTV3T_AP_HEAD,GT_MAIN,GT_TABLE - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L10-L15· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#FORM#SET_DATA#C1
MODULE INIT_DATA OUTPUT — ZFIR0110_DOC L164-L237 (74줄)
화면 최초 표시 시 회사코드·세금계산서 번호를 검증하고 T001 과 세금계산서(ZDTV3T_AP_HEAD/EXT)를 읽어 화면 초기 데이터를 세팅하는 PBO 모듈이다.
이 unit 의 조각 2개가 44/74줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[validation] 호출 데이터에서 회사코드·세금계산서 번호를 받아 누락 시 메시지 후 화면을 닫고, T001 에서 회사코드 정보(계정표 등)를 읽어 존재를 확인한다.
177| G_BUKRS = GT_TABLE-BUKRS.
178| G_INV_SEQ = GT_TABLE-INV_SEQ.
179| **
180|
181|
182| IF G_BUKRS IS INITIAL.
183| MESSAGE I000 WITH '회사코드 누락!!!'.
184| LEAVE TO SCREEN 0.
185| ENDIF.
186| *
187| IF G_INV_SEQ IS INITIAL.
188| MESSAGE I000 WITH '세금계산서 번호 누락!!!'.
189| LEAVE TO SCREEN 0.
190| ENDIF.
191|
192|
193|
194| * 회사정보
195| SELECT SINGLE *
196| FROM T001
197| WHERE BUKRS EQ G_BUKRS.
198| IF SY-SUBRC NE 0.
199| MESSAGE I000 WITH '회사코드 누락!!!'.
200| LEAVE TO SCREEN 0.
201| SET PARAMETER ID 'KPL' FIELD T001-KTOPL.
202| ENDIF.
- EN: Takes company code and invoice sequence from the caller data, exits with a message when missing, and validates the company code by reading T001.
- 테이블(파서): read T001 / write -
- SAP 객체: T001
- 업무 키워드: 회사코드 검증, 세금계산서 번호, 회사 정보, 계정표
- English: Company Code, T001, Chart of Accounts, Validation
- 정의부(복사 시 함께 필요):
G_BUKRS,ZDTV3T_AP_HEAD,GT_MAIN,GT_TABLE,G_INV_SEQ,T001,FIELD - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L177-L202· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#INIT_DATA_OUTPUT#C1
[sql_select] ZDTV3T_AP_HEAD 와 ZDTV3T_AP_EXT 를 회사코드·발행일·사업장·순번으로 조인해 해당 전자세금계산서 헤더 정보를 IS_INVOICE 로 읽고 없으면 메시지 후 화면을 닫는다.
208| CLEAR : IS_INVOICE.
209| SELECT SINGLE *
210| INTO CORRESPONDING FIELDS OF IS_INVOICE
211| FROM ZDTV3T_AP_HEAD AS A INNER JOIN ZDTV3T_AP_EXT AS B
212| ON A~BUKRS = B~BUKRS
213| AND A~ISSUE_DATE = B~ISSUE_DATE
214| AND A~BUPLA = B~BUPLA
215| AND A~INV_SEQ = B~INV_SEQ
216|
217|
218| WHERE A~BUKRS EQ G_BUKRS
219| AND A~INV_SEQ EQ G_INV_SEQ.
220| * AND B~USE_DOC EQ SPACE.
221|
222| IF SY-SUBRC NE 0.
223| MESSAGE I000 WITH '회사' G_BUKRS G_INV_SEQ '가 존재하지 않습니다.'.
224| LEAVE TO SCREEN 0.
225| ENDIF.
- EN: Reads the electronic tax invoice header into IS_INVOICE by joining ZDTV3T_AP_HEAD and ZDTV3T_AP_EXT on company code, issue date, business place and sequence, exiting with a message when not found.
- 테이블(파서): read ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT / write -
- SAP 객체: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT
- 업무 키워드: 전자세금계산서, 매입 세금계산서, 세금계산서 조회, 사업장
- English: Electronic Tax Invoice, AP Invoice, Inner Join
- 정의부(복사 시 함께 필요):
IS_INVOICE,ZDTV3T_AP_HEAD,G_BUKRS,G_INV_SEQ - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L208-L225· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#INIT_DATA_OUTPUT#C2
MODULE GET_TEXT INPUT — ZFIR0110_DOC L252-L270 (19줄)
구매처 입력 시 LFB1 에서 조정계정·지급조건을, LFA1 에서 구매처명을 조회해 화면에 채우는 PAI 모듈이다.
이 unit 의 조각 1개가 14/19줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[validation] 구매처(LIFNR)가 입력되면 LFB1(회사코드 뷰)에서 조정계정 AKONT 와 지급조건 ZTERM 을 읽어 없으면 '존재하지 않는 거래처' 오류를 내고, LFA1 에서 구매처명 NAME1 을 가져온다.
254| IF NOT ZDTV3S_DOC_LIFNR-LIFNR IS INITIAL.
255| SELECT SINGLE AKONT ZTERM
256| INTO (ZDTV3S_DOC_LIFNR-HKONT,ZDTV3S_DOC_LIFNR-ZTERM)
257| FROM LFB1
258| WHERE LIFNR EQ ZDTV3S_DOC_LIFNR-LIFNR
259| AND BUKRS EQ ZDTV3S_DOC_HEAD-BUKRS.
260| IF SY-SUBRC NE 0.
261| MESSAGE E000 WITH '존재하지 않는 거래처입니다.'.
262| ENDIF.
263| *
264| SELECT SINGLE NAME1 INTO ZDTV3S_DOC_LIFNR-NAME1
265| FROM LFA1
266| WHERE LIFNR EQ ZDTV3S_DOC_LIFNR-LIFNR.
267| ENDIF.
- EN: When a vendor is entered reads reconciliation account AKONT and payment terms ZTERM from LFB1 (company code view), raising an error if missing, then reads the vendor name from LFA1.
- 테이블(파서): read LFB1, LFA1 / write -
- SAP 객체: LFB1, LFA1
- 업무 키워드: 구매처 검증, 조정계정, 지급조건, 구매처명
- English: Vendor Master, Reconciliation Account, Payment Terms, LFB1, LFA1
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_LIFNR,ZDTV3S_DOC_HEAD - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L254-L267· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#GET_TEXT_INPUT#C1
MODULE USER_COMMAND_0100 INPUT — ZFIR0110_DOC L274-L578 (305줄)
화면 0100 의 기능코드(점검·붙여넣기·엔터·1회성/직원 거래처·행 추가/삭제·시뮬레이션·저장)를 처리하는 메인 PAI 모듈이다.
이 unit 의 조각 8개가 181/305줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[control_flow] 붙여넣기(PASTE) 시 체크된 행(BOX=X)을 GT_IMSI 에 복사해 계정이 비어 있는 첫 행 위치에 넣어 아이템 행을 복제한다.
288| READ TABLE GT_ITEM WITH KEY BOX = 'X'.
289| IF SY-SUBRC NE 0.
290| MESSAGE I000 WITH '복사 할 라인을 선택하세요.'.
291| EXIT.
292| ENDIF.
293|
294|
295| CLEAR: GT_IMSI[], GT_IMSI.
296| MOVE-CORRESPONDING GT_ITEM TO GT_IMSI.
297| APPEND GT_IMSI.
298|
299| READ TABLE GT_ITEM WITH KEY HKONT = SPACE.
300| IF SY-SUBRC = 0.
301| L_TABIX = SY-TABIX.
302| ENDIF.
303|
304| MOVE-CORRESPONDING GT_IMSI TO GT_ITEM.
305| CLEAR: GT_ITEM-BOX.
306| MODIFY GT_ITEM INDEX L_TABIX.
307| CLEAR GT_ITEM.
- EN: On PASTE copies the checked item row into GT_IMSI and writes it over the first row with an empty G/L account, duplicating the line.
- 업무 키워드: 행 복사, 붙여넣기, 전표 항목, 테이블컨트롤
- English: Copy Line, Table Control, Item
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_ITEM,GT_ITEM,GT_IMSI - 선언을 못 찾은 이름: L_TABIX (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L288-L307· confidence 0.8 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C1
[validation] 엔터 시 입력한 세금코드가 T007A(세금절차 TAXKR, 매입 유형 V)에 존재하는 매입세금코드인지 검증하고 아니면 메시지 후 중단한다.
392| SELECT SINGLE MANDT INTO SY-MANDT
393| FROM T007A
394| WHERE KALSM EQ 'TAXKR'
395| AND MWSKZ EQ ZDTV3S_DOC_LIFNR-MWSKZ
396| AND MWART EQ 'V'.
397| IF SY-SUBRC NE 0.
398| MESSAGE I000 WITH '세금코드' ZDTV3S_DOC_LIFNR-MWSKZ
399| '는 매입세금코드가 아닙니다.'.
400| EXIT.
401| ENDIF.
- EN: On ENTER validates that the entered tax code exists in T007A for procedure TAXKR as an input tax code (MWART = V), stopping with a message otherwise.
- 테이블(파서): read T007A / write -
- SAP 객체: T007A
- 업무 키워드: 매입세금코드, 세금코드 검증, 세금계산절차
- English: Input Tax Code, T007A, Tax Procedure TAXKR
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_LIFNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L392-L401· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C2
[validation] A003(세금 조건 KR) 에서 세금코드의 조건유형이 KRIT(불공제)면 G_NVV 를 세우고, 아니면 G_NVV 를 지우고 세액이 있으면서 세금계정 행이 없을 때 세금 아이템(GS_ITEM_NVV)을 첫 행에 삽입한다.
403| SELECT SINGLE *
404| FROM A003
405| WHERE KAPPL EQ 'TX'
406| AND ALAND EQ 'KR'
407| AND MWSKZ EQ ZDTV3S_DOC_LIFNR-MWSKZ.
408| IF SY-SUBRC EQ 0 AND A003-KSCHL EQ 'KRIT'.
409| G_NVV = 'X'.
410| READ TABLE GT_ITEM INTO TMP_ITEM
411| WITH KEY HKONT = G_HKONT.
412| IF SY-SUBRC EQ 0.
413| ** 김재환
414| * DELETE GT_ITEM INDEX 1.
415|
416| ENDIF.
417| ELSE.
418| *
419| G_NVV = SPACE.
420| READ TABLE GT_ITEM INTO TMP_ITEM
421| WITH KEY HKONT = G_HKONT.
422| IF SY-SUBRC NE 0 AND IS_INVOICE-TAXTOTAL > 0 .
423| INSERT GS_ITEM_NVV INTO GT_ITEM INDEX 1.
424| ENDIF.
425| ENDIF.
- EN: Reads A003 for the tax code: if condition type KRIT (non-deductible) sets G_NVV, otherwise clears it and inserts the tax line GS_ITEM_NVV at index 1 when the invoice has tax and no tax account line exists.
- 테이블(파서): read A003 / write -
- SAP 객체: A003, KONP
- 업무 키워드: 불공제 세금, 세금 조건, 세금 라인 추가, 조건유형 KRIT
- English: Non-deductible Tax, Condition Record A003, Tax Line
- 정의부(복사 시 함께 필요):
A003,ZDTV3S_DOC_LIFNR,G_NVV,ZDTV3S_DOC_ITEM,GT_ITEM,TMP_ITEM,G_HKONT,IS_INVOICE,GS_ITEM_NVV - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L403-L425· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C3
[validation] KONP 에서 세율(KBETR)이 0 인 영세 세금코드인지 확인해 영세인데 세액이 있으면 '과세세금코드 선택', 과세인데 세액이 없으면 '영세세금코드 선택' 안내를 내고 테이블컨트롤 행수 재설정 후 SUM_AMT 로 합계를 다시 계산한다.
428| SELECT SINGLE MANDT INTO SY-MANDT
429| FROM KONP
430| WHERE KNUMH EQ A003-KNUMH
431| AND KBETR EQ 0 .
432| IF SY-SUBRC EQ 0.
433| G_ZERO = 'X'.
434| IF NOT IS_INVOICE-TAXTOTAL IS INITIAL .
435| MESSAGE I000 WITH '과세세금코드를 선택하세요.'.
436| EXIT.
437| ENDIF.
438| ELSE.
439| G_ZERO = SPACE.
440| IF IS_INVOICE-TAXTOTAL IS INITIAL.
441| MESSAGE I000 WITH '영세세금코드를 선택하세요.'.
442| ENDIF.
443| ENDIF.
444| * 현재라인 재설정.
445| TC_100-LINES = LINES( GT_ITEM[] ).
446|
447| PERFORM SUM_AMT.
- EN: Checks KONP for a zero tax rate (G_ZERO) and warns when the zero-rate/taxable code contradicts the invoice tax total, then resets the table control lines and recalculates totals via SUM_AMT.
- 테이블(파서): read KONP / write -
- 호출(파서): SUM_AMT
- SAP 객체: KONP, A003
- 업무 키워드: 영세율, 과세, 세율 검증, 세액 대조, 합계 재계산
- English: Zero-rate Tax, Tax Rate, KONP, Validation
- 정의부(복사 시 함께 필요):
A003,G_ZERO,IS_INVOICE,TC_100,ZDTV3S_DOC_ITEM,GT_ITEM - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L428-L447· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C4
[fm_call] 1회성 거래처(XCPDK) 선택 시 RF_CPD_DATEN_BEARBEITEN 팝업으로 CPD 주소·은행 정보(BSEC)를 입력받아 화면 구조에 반영하고, 해제 시 BSEC 를 지운다.
454| IF ZDTV3S_DOC_LIFNR-XCPDK EQ 'X'.
455| CALL FUNCTION 'RF_CPD_DATEN_BEARBEITEN'
456| EXPORTING
457| I_AKTYP = 'H'
458| I_BKPF = BKPF
459| I_BSEC = BSEC
460| I_BSEG = BSEG
461| I_KTNRA = ZDTV3S_DOC_LIFNR-LIFNR
462| I_NAME1 = ZDTV3S_DOC_LIFNR-NAME1
463| I_T001 = T001
464| I_XCPDK = 'X'
465| I_ASPOPUP = 'X'
466| I_CREATE_POPUP = 'X'
467| IMPORTING
468| E_BSEC = BSEC
469| E_BSEG = BSEG
470| E_CPD_DATA_INVALID = L_CHAR.
471| *
472| IF L_CHAR NE 'X'.
473| MOVE-CORRESPONDING BSEC TO ZDTV3S_DOC_LIFNR.
474| ENDIF.
475| ELSE.
476| CLEAR : BSEC , ZDTV3S_DOC_LIFNR-XCPDK.
477| MOVE-CORRESPONDING BSEC TO ZDTV3S_DOC_LIFNR.
478| ENDIF.
- EN: For one-time vendors (XCPDK) opens the RF_CPD_DATEN_BEARBEITEN popup to capture CPD address/bank data into BSEC and copies it to the screen structure, clearing it when unchecked.
- 호출(파서): RF_CPD_DATEN_BEARBEITEN
- SAP 객체: RF_CPD_DATEN_BEARBEITEN, BSEC
- 업무 키워드: 1회성 거래처, CPD 데이터, 주소 입력, 은행 정보
- English: One-Time Account, CPD, BSEC, RF_CPD_DATEN_BEARBEITEN
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_LIFNR,BKPF,BSEC,BSEG,T001,L_CHAR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L454-L478· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C5
[fm_call] 직원 거래처(XZEMP) 선택 시 RF_CPD_DATEN_BEARBEITEN 팝업으로 지급 대상 정보(BSEC)를 입력받고 유효하지 않으면 플래그를 해제하며, 미선택 시 BSEC_CLEAR 로 정리한다.
485| IF ZDTV3S_DOC_LIFNR-XZEMP EQ 'X'.
486| CALL FUNCTION 'RF_CPD_DATEN_BEARBEITEN'
487| EXPORTING
488| I_AKTYP = 'H'
489| I_BKPF = BKPF
490| I_BSEC = BSEC
491| I_BSEG = BSEG
492| I_KTNRA = ZDTV3S_DOC_LIFNR-LIFNR
493| I_NAME1 = ZDTV3S_DOC_LIFNR-NAME1
494| I_T001 = T001
495| I_XCPDK = ' '
496| I_ASPOPUP = 'X'
497| I_CREATE_POPUP = 'X'
498| IMPORTING
499| E_BSEC = BSEC
500| E_BSEG = BSEG
501| E_CPD_DATA_INVALID = L_CHAR.
502| *
503| IF L_CHAR NE 'X'.
504| MOVE-CORRESPONDING BSEC TO ZDTV3S_DOC_LIFNR.
505| ELSE.
506| CLEAR : BSEC , ZDTV3S_DOC_LIFNR-XZEMP.
507| ENDIF.
508| ELSE.
509| PERFORM BSEC_CLEAR.
510| ENDIF.
- EN: For employee payee (XZEMP) opens the RF_CPD_DATEN_BEARBEITEN popup for payee data into BSEC, clears the flag when invalid, or calls BSEC_CLEAR when unchecked.
- 호출(파서): RF_CPD_DATEN_BEARBEITEN, BSEC_CLEAR
- SAP 객체: RF_CPD_DATEN_BEARBEITEN, BSEC
- 업무 키워드: 직원 거래처, 지급 대상, CPD 팝업
- English: Employee Vendor, Payee Data, RF_CPD_DATEN_BEARBEITEN
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_LIFNR,BKPF,BSEC,BSEG,T001,L_CHAR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L485-L510· confidence 0.8 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C6
[control_flow] 행 추가(INS)는 커서 위치에 빈 행을 삽입해 GT_ITEM 을 재구성하고, 행 삭제(DEL)는 체크된 행을 DELETE 하며 각각 테이블컨트롤 행수를 재설정한다.
514| READ TABLE GT_ITEM WITH KEY BOX = 'X'.
515| IF SY-SUBRC NE 0.
516| MESSAGE I000 WITH '추가 할 라인을 선택하세요.'.
517| EXIT.
518| ENDIF.
519|
520| CLEAR : OK_CODE.
521| GET CURSOR FIELD L_FIELD LINE L_POS.
522|
523| CLEAR: GT_IMSI[], GT_IMSI.
524|
525| LOOP AT GT_ITEM.
526| IF SY-TABIX = L_POS.
527| APPEND GT_IMSI.
528| CLEAR GT_IMSI.
529| ENDIF.
530|
531| MOVE-CORRESPONDING GT_ITEM TO GT_IMSI.
532| APPEND GT_IMSI.
533| CLEAR GT_IMSI.
534|
535| ENDLOOP.
536|
537| GT_ITEM[] = GT_IMSI[].
538|
539| * 현재라인 재설정.
540| TC_100-LINES = LINES( GT_ITEM[] ).
541|
542|
543| WHEN 'DEL'. "라인삭제
544| * 삭제할라인 존재확인.
545| READ TABLE GT_ITEM WITH KEY BOX = 'X'.
546| IF SY-SUBRC NE 0.
547| MESSAGE I000 WITH '삭제할 라인을 선택하세요.'.
548| EXIT.
549| ENDIF.
550| * ITAB 삭제
551| DELETE GT_ITEM WHERE BOX EQ 'X'.
552| * 현재라인 재설정.
553| TC_100-LINES = LINES( GT_ITEM[] ).
- EN: INS inserts an empty line at the cursor position by rebuilding GT_ITEM; DEL deletes checked rows; both reset the table control line count.
- 업무 키워드: 행 추가, 행 삭제, 테이블컨트롤, 전표 항목 편집
- English: Insert Line, Delete Line, Table Control
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_ITEM,GT_ITEM,OK_CODE,FIELD,L_FIELD,L_POS,GT_IMSI,TC_100 - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L514-L553· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C7
[control_flow] SIM/SIMU 는 CHECK_DATA 검증 후 POST 를 시뮬레이션 모드('+','1')로, SAVE 는 실제 전기 모드(' ')로 호출한다.
556| WHEN 'SIM'.
557| * 입력자료 점검.
558| PERFORM CHECK_DATA.
559| * 전표 SIM....
560| PERFORM POST USING '+'.
561|
562| WHEN 'SIMU'.
563| * 입력자료 점검.
564| PERFORM CHECK_DATA.
565| * 전표 SIM....
566| PERFORM POST USING '1'.
567|
568| WHEN 'SAVE'.
569| *
570| PERFORM CHECK_DATA.
571| *
572| PERFORM POST USING ' '.
- EN: SIM/SIMU run CHECK_DATA then POST in simulation modes ('+','1'); SAVE runs CHECK_DATA then POST for real posting.
- 호출(파서): CHECK_DATA, POST, CHECK_DATA, POST, CHECK_DATA, POST
- SAP 객체: Z_FI_DOCUMENT_POSTING
- 업무 키워드: 시뮬레이션, 전표 저장, 전기, 입력 점검
- English: Simulation, Post Document, Save
- 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L556-L572· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C8
FORM CHECK_DATA — ZFIR0110_DOC L582-L619 (38줄)
전표 입력값을 전기 전에 검증한다 — 불공제 세금코드 판정, 과세/영세 세금코드와 세액의 정합성 확인.
이 unit 의 조각 2개가 26/38줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[validation] 선택한 세금코드의 조건레코드(A003)를 읽어 조건유형이 KRIT 이면 불공제(비공제 매입세액) 건으로 판정하고 플래그를 세운다 — 이후 세금 라인을 만들지 않기 위한 표시다.
584| SELECT SINGLE *
585| FROM A003
586| WHERE KAPPL EQ 'TX'
587| AND ALAND EQ 'KR'
588| AND MWSKZ EQ ZDTV3S_DOC_LIFNR-MWSKZ.
589| IF SY-SUBRC EQ 0 AND A003-KSCHL EQ 'KRIT'.
590| G_NVV = 'X'.
591| ELSE.
592| G_NVV = SPACE.
593| ENDIF.
- EN: Reads the tax condition record (A003) and flags the case as non-deductible input VAT when the condition type is KRIT.
- 테이블(파서): read A003 / write -
- SAP 객체: A003, KSCHL, MWSKZ, KRIT
- 업무 키워드: 불공제, 비공제매입세액, 세금코드, 조건유형, 세금라인삭제
- English: non-deductible, input VAT, tax code, condition type, KRIT, A003
- 정의부(복사 시 함께 필요):
A003,ZDTV3S_DOC_LIFNR,G_NVV - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L584-L593· confidence 0.82 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#CHECK_DATA#C1
[validation] 조건레코드의 세율(KONP-KBETR)이 0 인지 확인해 영세 세금코드인지 판정하고, 세금계산서의 세액 유무와 맞지 않으면 사용자에게 알린다 — 세액이 있는데 영세코드면 '과세세금코드를 선택하세요', 세액이 없는데 과세코드면 '영세세금코드를 선택하세요'.
596| SELECT SINGLE MANDT INTO SY-MANDT
597| FROM KONP
598| WHERE KNUMH EQ A003-KNUMH
599| AND KBETR EQ 0 .
600| IF SY-SUBRC EQ 0.
601| G_ZERO = 'X'.
602| IF NOT IS_INVOICE-TAXTOTAL IS INITIAL .
603| MESSAGE I000 WITH '과세세금코드를 선택하세요.'.
604| EXIT.
605| ENDIF.
606| ELSE.
607| G_ZERO = SPACE.
608| IF IS_INVOICE-TAXTOTAL IS INITIAL.
609| MESSAGE I000 WITH '영세세금코드를 선택하세요.'.
610| ENDIF.
611| ENDIF.
- EN: Checks whether the tax condition rate is zero and cross-validates it against the invoice tax total, prompting the user to pick the matching tax code.
- 테이블(파서): read KONP / write -
- SAP 객체: KONP, KBETR, A003, MWSKZ
- 업무 키워드: 영세, 과세, 세금코드검증, 세율, 세액정합성, 입력검증, 세금계산서
- English: zero rate, taxable, tax code validation, tax rate, consistency check, input validation
- 정의부(복사 시 함께 필요):
A003,G_ZERO,IS_INVOICE - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L596-L611· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#CHECK_DATA#C2
FORM SUM_AMT — ZFIR0110_DOC L1128-L1166 (39줄)
구매처 항목과 비용 아이템의 차변·대변 합계를 계산해 전표 균형 여부를 신호등 아이콘으로 표시하는 FORM 이다.
이 unit 의 조각 2개가 33/39줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[calculation] 구매처 금액 부호에 따라 차변(SUMSOLL)/대변(SUMHABEN) 합계를 초기화하되, 자동세금계산(XMWST)이 아니거나 불공제(G_NVV)면 세액(MWSTS)을 반대편에 포함한다.
1131| ZDTV3S_DOC_HEAD-SUMSOLL = 0 .
1132| ZDTV3S_DOC_HEAD-SUMHABEN = 0 .
1133| IF ZDTV3S_DOC_LIFNR-DMBTR > 0.
1134| * 차변금액.
1135| IF ZDTV3S_DOC_HEAD-XMWST NE 'X' OR G_NVV EQ 'X'.
1136| ZDTV3S_DOC_HEAD-SUMSOLL = ZDTV3S_DOC_LIFNR-MWSTS.
1137| ENDIF.
1138| * 대변금액.
1139| ZDTV3S_DOC_HEAD-SUMHABEN = ABS( ZDTV3S_DOC_LIFNR-DMBTR ).
1140| ELSE.
1141| * 차변금액.
1142| ZDTV3S_DOC_HEAD-SUMSOLL = ABS( ZDTV3S_DOC_LIFNR-DMBTR ).
1143| * 대변금액.
1144| IF ZDTV3S_DOC_HEAD-XMWST NE 'X' OR G_NVV EQ 'X'.
1145| ZDTV3S_DOC_HEAD-SUMHABEN = ZDTV3S_DOC_LIFNR-MWSTS.
1146| ENDIF.
1147| ENDIF.
- EN: Initialises debit/credit totals from the vendor amount sign, including the tax amount on the opposite side when tax is not auto-calculated (XMWST) or is non-deductible (G_NVV).
- 업무 키워드: 차변 합계, 대변 합계, 세액, 불공제, 자동세금계산
- English: Debit Total, Credit Total, Tax Amount, Non-deductible Tax
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_HEAD,ZDTV3S_DOC_LIFNR,G_NVV - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1131-L1147· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#SUM_AMT#C1
[aggregation] 비용 아이템을 전기키 40(차변)/50(대변)별로 합산해 차대 합계에 더하고 두 합계가 일치하면 녹색등, 아니면 적색등을 전표 헤더 AMPEL 에 표시한다.
1149| LOOP AT GT_ITEM.
1150|
1151| CASE GT_ITEM-BSCHL.
1152| WHEN '40'.
1153| ADD GT_ITEM-DMBTR TO ZDTV3S_DOC_HEAD-SUMSOLL.
1154| WHEN '50'.
1155| ADD GT_ITEM-DMBTR TO ZDTV3S_DOC_HEAD-SUMHABEN.
1156| ENDCASE.
1157|
1158| ENDLOOP.
1159| *
1160| IF ZDTV3S_DOC_HEAD-SUMSOLL EQ ZDTV3S_DOC_HEAD-SUMHABEN.
1161| ZDTV3S_DOC_HEAD-AMPEL = ICON_GREEN_LIGHT .
1162| ELSE.
1163| ZDTV3S_DOC_HEAD-AMPEL = ICON_RED_LIGHT.
1164| ENDIF.
- EN: Aggregates item amounts by posting key 40 (debit) / 50 (credit) into the totals and sets the header traffic light green when debit equals credit, red otherwise.
- 업무 키워드: 전기키, 차대 균형, 전표 밸런스, 신호등
- English: Posting Key, Debit/Credit Balance, Traffic Light
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_ITEM,GT_ITEM,ZDTV3S_DOC_HEAD - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1149-L1164· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#SUM_AMT#C2
FORM POST — ZFIR0110_DOC L623-L795 (173줄)
전표 헤더·아이템을 구성한 뒤 시뮬레이션(ZFIR0130 호출) 또는 Z_FI_DOCUMENT_POSTING 실제 전기를 수행하고 성공 시 세금계산서 테이블에 전표번호를 기록하는 FORM 이다.
이 unit 의 조각 4개가 87/173줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[control_flow] SET_BKPF/SET_BSEG 로 BBKPF·BBSEG 전기 데이터와 시뮬레이션용 BSEG 를 만들고 P_TEST 값(+/-/1/공백)에 따라 BDC 모드(E/A/N)를 정한다.
650| PERFORM SET_BKPF TABLES LT_BKPF.
651| * 전표 항목정보.
652| PERFORM SET_BSEG TABLES LT_BSEG T_BSEG.
653|
654|
655| *
656| IF P_TEST EQ '-' OR P_TEST EQ '+'.
657| L_MODE = 'E'.
658| ELSEIF P_TEST EQ '1'.
659| L_MODE = 'A'.
660| ELSE.
661| L_MODE = 'N'.
662| ENDIF.
- EN: Builds BBKPF/BBSEG posting data and simulation BSEG via SET_BKPF/SET_BSEG and derives the BDC mode (E/A/N) from P_TEST.
- 호출(파서): SET_BKPF, SET_BSEG
- SAP 객체: BBKPF, BBSEG
- 업무 키워드: 전표 헤더, 전표 항목, BDC 모드, 시뮬레이션
- English: BBKPF, BBSEG, BDC Mode
- 정의부(복사 시 함께 필요):
LT_BKPF,LT_BSEG,BSEG,T_BSEG,L_MODE - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L650-L662· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#POST#C1
[interface] 시뮬레이션(+)이면 T020(FBV1)을 읽고 BKPF 에 회계연도·기간을 채운 뒤 T_BKPF/T_BSEG 를 ABAP 메모리로 EXPORT 하고 ZFIR0130 전표 시뮬레이션 화면을 호출한다.
670| IF P_TEST EQ '+'.
671| SELECT SINGLE *
672| FROM T020
673| WHERE TCODE = 'FBV1'.
674|
675| LOOP AT LT_BKPF.
676| MOVE-CORRESPONDING LT_BKPF TO T_BKPF.
677| T_BKPF-GJAHR = ZDTV3S_DOC_HEAD-BUDAT+0(4).
678| T_BKPF-MONAT = ZDTV3S_DOC_HEAD-BUDAT+4(2).
679| APPEND T_BKPF.
680| CLEAR T_BKPF.
681| ENDLOOP.
682| *
683|
684| EXPORT T_BKPF TO MEMORY ID 'T_BKPF'.
685| EXPORT T_BSEG TO MEMORY ID 'T_BSEG'.
686| CALL TRANSACTION 'ZFIR0130'.
687| FREE: T_BKPF, T_BSEG.
- EN: In simulation mode reads T020 for FBV1, fills fiscal year/period in T_BKPF, exports T_BKPF/T_BSEG to ABAP memory and calls transaction ZFIR0130 to display the simulated document.
- 테이블(파서): read T020 / write -
- 호출(파서): ZFIR0130
- SAP 객체: ZFIR0130, T020, BKPF, BSEG
- 업무 키워드: 전표 시뮬레이션, 메모리 전달, 회계연도, 기간
- English: Document Simulation, EXPORT TO MEMORY, ZFIR0130
- 정의부(복사 시 함께 필요):
T020,LT_BKPF,BKPF,T_BKPF,ZDTV3S_DOC_HEAD,BSEG,T_BSEG - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L670-L687· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#POST#C2
[fm_call] 실제 전기 시 Z_FI_DOCUMENT_POSTING 에 BDC 모드·BBKPF·BBSEG 를 넘겨 회계전표를 생성하고 회사코드·전표번호·회계연도와 메시지(FIMSG)를 받는다.
710| ELSEIF P_TEST EQ ''.
711|
712| ** 김재환
713| * CALL FUNCTION 'ZDTV3SAP_CRD_INT_POST'
714| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING'
715| EXPORTING
716| I_BDC_MODE = L_MODE
717| I_SIMULATION = P_TEST
718| IMPORTING
719| E_BUKRS = G_BUKRS
720| E_BELNR = G_BELNR
721| E_GJAHR = G_GJAHR
722| TABLES
723| T_BBKPF = LT_BKPF
724| T_BBSEG = LT_BSEG
725| T_MESSTAB = LT_MSG.
726|
727|
728| READ TABLE LT_BKPF INDEX 1.
729| CHECK SY-SUBRC EQ 0.
- EN: For real posting calls Z_FI_DOCUMENT_POSTING with BDC mode, BBKPF and BBSEG to create the accounting document and returns company code, document number, fiscal year and FIMSG messages.
- 호출(파서): Z_FI_DOCUMENT_POSTING
- SAP 객체: Z_FI_DOCUMENT_POSTING, BBKPF, BBSEG, FIMSG
- 업무 키워드: 전표 전기, 회계전표 생성, 매입전표, 전기 메시지
- English: Document Posting, Accounting Document, Z_FI_DOCUMENT_POSTING
- 정의부(복사 시 함께 필요):
L_MODE,G_BUKRS,G_BELNR,G_GJAHR,LT_BKPF,LT_BSEG,LT_MSG - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L710-L729· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#POST#C3
[db_write] 성공 메시지 FP S 001 이 있으면 ZDTV3T_AP_EXT_D 에 전표번호·전기일·증빙일·전표유형·세금코드·금액·사용자·연도를 UPDATE 하고 ZDTV3T_AP_EXT 의 USE_DOC 를 X 로 표시한 뒤 파라미터 ID 로 전표키를 넘기고 화면을 닫으며, 실패면 메시지 팝업을 띄운다.
733| READ TABLE LT_MSG WITH KEY MSGID = 'FP'
734| MSGTY = 'S'
735| MSGNO = '001'.
736| IF SY-SUBRC EQ 0.
737| L_OK = 'X'.
738|
739| UPDATE ZDTV3T_AP_EXT_D SET: BELNR = G_BELNR
740| BUDAT = LT_BKPF-BUDAT
741| BLDAT = LT_BKPF-BLDAT
742| BLART = LT_BKPF-BLART
743| MWSKZ = ZDTV3S_DOC_LIFNR-MWSKZ
744| DMBTR = IS_INVOICE-GRANDTOTAL
745| UNAME = SY-UNAME
746| ZGJAH = G_GJAHR
747| WHERE BUKRS = IS_INVOICE-BUKRS
748| AND ISSUE_DATE = IS_INVOICE-ISSUE_DATE
749| AND BUPLA = IS_INVOICE-BUPLA
750| AND INV_SEQ = IS_INVOICE-INV_SEQ.
751|
752|
753| UPDATE ZDTV3T_AP_EXT SET: USE_DOC = 'X'
754| WHERE BUKRS = IS_INVOICE-BUKRS
755| AND ISSUE_DATE = IS_INVOICE-ISSUE_DATE
756| AND BUPLA = IS_INVOICE-BUPLA
757| AND INV_SEQ = IS_INVOICE-INV_SEQ.
758|
759| SET PARAMETER ID 'ZDTV3_OK' FIELD L_OK.
760| SET PARAMETER ID 'BUK' FIELD G_BUKRS.
761| SET PARAMETER ID 'GJR' FIELD G_GJAHR.
762| SET PARAMETER ID 'BLN' FIELD G_BELNR.
763| LEAVE TO SCREEN 0.
764| ELSE.
765| CHECK P_TEST EQ SPACE.
766| PERFORM MESSAGE_POPUP TABLES LT_MSG.
767| PERFORM MULTI_MSG_POPUPC USING IT_MSG.
768| ENDIF.
- EN: When success message FP S 001 exists, updates ZDTV3T_AP_EXT_D with the document number/dates/type/tax code/amount/user/year and flags USE_DOC in ZDTV3T_AP_EXT, passes the document key via parameter IDs and leaves the screen; otherwise shows the message popups.
- 테이블(파서): read - / write ZDTV3T_AP_EXT_D, ZDTV3T_AP_EXT
- 호출(파서): MESSAGE_POPUP, MULTI_MSG_POPUPC
- SAP 객체: ZDTV3T_AP_EXT_D, ZDTV3T_AP_EXT
- 업무 키워드: 세금계산서 전표 연결, 전표번호 기록, 사용여부, 전기 결과, 파라미터 ID
- English: Tax Invoice, Document Number, Update, Posting Result
- 정의부(복사 시 함께 필요):
LT_MSG,L_OK,G_BELNR,LT_BKPF,ZDTV3S_DOC_LIFNR,IS_INVOICE,G_GJAHR,FIELD,G_BUKRS,IT_MSG - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L733-L768· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#POST#C4
FORM SET_BKPF — ZFIR0110_DOC L799-L816 (18줄)
화면 헤더(ZDTV3S_DOC_HEAD)를 BBKPF 전표 헤더로 옮기고 자동세금계산 해제·세션 종료 플래그를 세팅하는 FORM 이다.
이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[calculation] 화면 헤더를 BBKPF 로 복사하고 환산일(WWERT) 미입력 처리, 레코드유형 B, 자동세금계산(XMWST) 해제, 전기 완료 플래그(XPRFG) 설정 후 헤더 행을 추가한다.
801| MOVE-CORRESPONDING ZDTV3S_DOC_HEAD TO PT_BKPF.
802| IF ZDTV3S_DOC_HEAD-WWERT IS INITIAL.
803| PT_BKPF-WWERT = SPACE.
804| ENDIF.
805| PT_BKPF-STYPE = 'B'.
806| ** 불공제는 자동세금계산안함.
807| PT_BKPF-XMWST = SPACE.
808| PT_BKPF-XPRFG = 'X'.
809| *
810| INCLUDE ZFIR0110_U104P.
811| * INCLUDE ZDTV3I_U104P IF FOUND.
812| *
813| APPEND PT_BKPF.
- EN: Copies the screen header into BBKPF, handles empty translation date, sets record type B, disables automatic tax calculation (XMWST) and sets XPRFG, then appends the header.
- SAP 객체: BBKPF
- 업무 키워드: 전표 헤더, 자동세금계산, 환산일, 전표유형
- English: Document Header, BBKPF, Automatic Tax Calculation
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_HEAD - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L801-L813· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BKPF#C1
FORM SET_BSEG — ZFIR0110_DOC L820-L1047 (228줄)
세금계산서 매입전표의 구매처 항목과 비용 항목을 BBSEG(전기용)와 BSEG(시뮬레이션용) 두 가지 형식으로 구성하는 FORM 이다.
이 unit 의 조각 4개가 195/228줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[calculation] 구매처 항목(ZDTV3S_DOC_LIFNR)을 BBSEG 로 옮겨 전기키·구매처(NEWBS/NEWKO)를 세팅하고, 1회성/직원 거래처가 아니면 CPD 주소·은행 필드를 지우며 지급기준일·할인일수·기산일 초기값 처리 후 금액·세액을 통화형식으로 WRBTR/WMWST 에 넣고(불공제 아니면 세액 제거) 첫 BBSEG 항목으로 추가한다.
828| CLEAR : PT_BSEG , PT_BSEG[].
829| MOVE-CORRESPONDING ZDTV3S_DOC_LIFNR TO PT_BSEG.
830| PT_BSEG-STYPE = 'B'.
831| PT_BSEG-NEWBS = ZDTV3S_DOC_LIFNR-BSCHL.
832| PT_BSEG-NEWKO = ZDTV3S_DOC_LIFNR-LIFNR.
833| * 금액...
834| CLEAR : PT_BSEG-DMBTR , PT_BSEG-MWSTS .
835| *
836| IF ZDTV3S_DOC_LIFNR-XZEMP EQ SPACE AND
837| ZDTV3S_DOC_LIFNR-XCPDK EQ SPACE.
838| CLEAR : PT_BSEG-STCD2 , PT_BSEG-NAME1,
839| PT_BSEG-STRAS , PT_BSEG-ORT01,
840| PT_BSEG-PSTLZ , PT_BSEG-LAND1,
841| PT_BSEG-BANKN .
842|
843| ENDIF.
844| *
845| IF ZDTV3S_DOC_LIFNR-XZEMP EQ 'X'.
846| PT_BSEG-REGUL = 'X'.
847| ENDIF.
848| IF ZDTV3S_DOC_LIFNR-ZFBDT IS INITIAL.
849| CLEAR : PT_BSEG-ZFBDT.
850| ENDIF.
851|
852|
853|
854| IF ZDTV3S_DOC_LIFNR-ZBD1T IS INITIAL.
855| CLEAR : PT_BSEG-ZBD1T.
856| ENDIF.
857|
858| IF ZDTV3S_DOC_LIFNR-ZBD2T IS INITIAL.
859| CLEAR : PT_BSEG-ZBD2T.
860| ENDIF.
861|
862|
863|
864| IF ZDTV3S_DOC_LIFNR-VALUT IS INITIAL.
865| CLEAR : PT_BSEG-VALUT.
866| ENDIF.
867| *
868| ZDTV3S_DOC_LIFNR-DMBTR = ABS( ZDTV3S_DOC_LIFNR-DMBTR ).
869| ZDTV3S_DOC_LIFNR-MWSTS = ABS( ZDTV3S_DOC_LIFNR-MWSTS ).
870| WRITE ZDTV3S_DOC_LIFNR-DMBTR TO PT_BSEG-WRBTR CURRENCY T001-WAERS.
871| WRITE ZDTV3S_DOC_LIFNR-MWSTS TO PT_BSEG-WMWST CURRENCY T001-WAERS.
872| *
873| * 불공제는 세금금액을 사용함.
874| IF G_NVV EQ SPACE.
875| PT_BSEG-WMWST = SPACE.
876| ENDIF.
877| *
878| INCLUDE ZFIR0110_U105P.
879| * INCLUDE ZDTV3I_U105P IF FOUND.
880| *
881| APPEND PT_BSEG. CLEAR PT_BSEG.
- EN: Builds the vendor line in BBSEG: posting key/vendor as NEWBS/NEWKO, clears one-time-account address/bank fields unless XZEMP/XCPDK, handles empty baseline date/discount days/value date, writes DMBTR/MWSTS as WRBTR/WMWST in company currency (tax cleared unless non-deductible G_NVV) and appends the line.
- SAP 객체: BBSEG, T001
- 업무 키워드: 구매처 항목, 전기키, 1회성 거래처, 지급기준일, 세액, 불공제, 매입전표
- English: Vendor Line Item, Posting Key, One-Time Account, Baseline Date, Tax Amount, BBSEG
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_LIFNR,T001,G_NVV - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L828-L881· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BSEG#C1
[calculation] 금액이 0 이 아닌 비용 아이템(GT_ITEM)별로 G/L 계정·전기키·금액을 BBSEG 항목으로 만들고 비어 있는 코스트 필드(FKONT/PERNR/PROJK/BZDAT)를 지우며 세금코드는 구매처 항목 값을 상속(없으면 '**')하고 사업장·적요를 보완해 추가한다.
884| LOOP AT GT_ITEM WHERE DMBTR NE 0.
885| MOVE-CORRESPONDING GT_ITEM TO PT_BSEG.
886| PT_BSEG-STYPE = 'B'.
887| PT_BSEG-NEWKO = GT_ITEM-HKONT.
888| PT_BSEG-NEWBS = GT_ITEM-BSCHL.
889| CLEAR : PT_BSEG-DMBTR , PT_BSEG-HKONT.
890| WRITE GT_ITEM-DMBTR TO PT_BSEG-WRBTR CURRENCY T001-WAERS.
891| *
892| IF GT_ITEM-FKONT IS INITIAL.
893| CLEAR : PT_BSEG-FKONT.
894| ENDIF.
895| IF GT_ITEM-PERNR IS INITIAL.
896| CLEAR : PT_BSEG-PERNR.
897| ENDIF.
898| IF GT_ITEM-PROJK IS INITIAL.
899| CLEAR : PT_BSEG-PROJK.
900| ENDIF.
901| IF GT_ITEM-BZDAT IS INITIAL.
902| CLEAR : PT_BSEG-BZDAT.
903| ENDIF.
904| *
905| * IF G_NVV EQ 'X' OR G_ZERO EQ 'X'.
906| PT_BSEG-MWSKZ = ZDTV3S_DOC_LIFNR-MWSKZ.
907| * ENDIF.
908|
909| IF PT_BSEG-MWSKZ IS INITIAL.
910| PT_BSEG-MWSKZ = '**'.
911| ELSE.
912| PT_BSEG-BUPLA = ZDTV3S_DOC_LIFNR-BUPLA.
913| ENDIF.
914| *
915| IF PT_BSEG-SGTXT IS INITIAL.
916| PT_BSEG-SGTXT = ZDTV3S_DOC_LIFNR-SGTXT.
917| ENDIF.
918| *
919| INCLUDE ZFIR0110_U106P.
920| * INCLUDE ZDTV3I_U106P IF FOUND.
921| *
922| APPEND PT_BSEG. CLEAR PT_BSEG.
923| ENDLOOP.
- EN: For each expense item with non-zero amount builds a BBSEG line with G/L account, posting key and amount, clears empty cost-object fields, inherits the vendor tax code (default '**'), sets business place and default text, and appends it.
- SAP 객체: BBSEG, BSEG
- 업무 키워드: 비용 항목, G/L 계정, 세금코드 상속, 사업장, 적요, 코스트 객체
- English: Expense Line Item, G/L Account, Tax Code, Business Place, BBSEG
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_ITEM,GT_ITEM,T001,ZDTV3S_DOC_LIFNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L884-L923· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BSEG#C2
[calculation] 시뮬레이션용 BSEG 구조에 구매처 항목을 회사코드·회계연도·항목번호(BUZEI)·계정유형 K·대변(H)·통화 KRW·구매처·조정계정·금액·세액(불공제 아니면 제거)으로 구성해 추가한다.
936| CLEAR : T_BSEG , T_BSEG[].
937| MOVE-CORRESPONDING ZDTV3S_DOC_LIFNR TO T_BSEG.
938|
939| CN = CN + 1.
940| T_BSEG-MANDT = SY-MANDT.
941| T_BSEG-BUKRS = ZDTV3S_DOC_HEAD-BUKRS.
942| T_BSEG-GJAHR = ZDTV3S_DOC_HEAD-BUDAT+0(4).
943| T_BSEG-BUZEI = CN.
944|
945| T_BSEG-BSCHL = ZDTV3S_DOC_LIFNR-BSCHL.
946| T_BSEG-KOART = 'K'.
947| T_BSEG-SHKZG = 'H'.
948| T_BSEG-PSWSL = 'KRW'.
949|
950| T_BSEG-LIFNR = ZDTV3S_DOC_LIFNR-LIFNR.
951| T_BSEG-HKONT = ZDTV3S_DOC_LIFNR-HKONT.
952| T_BSEG-ZUONR = ZDTV3S_DOC_LIFNR-ZUONR.
953|
954|
955| IF ZDTV3S_DOC_LIFNR-ZFBDT IS INITIAL.
956| CLEAR : T_BSEG-ZFBDT.
957| ENDIF.
958|
959|
960| IF ZDTV3S_DOC_LIFNR-ZBD1T IS INITIAL.
961| CLEAR : T_BSEG-ZBD1T.
962| ENDIF.
963|
964| IF ZDTV3S_DOC_LIFNR-ZBD2T IS INITIAL.
965| CLEAR : T_BSEG-ZBD2T.
966| ENDIF.
967|
968| IF ZDTV3S_DOC_LIFNR-VALUT IS INITIAL.
969| CLEAR : T_BSEG-VALUT.
970| ENDIF.
971| *
972| T_BSEG-WRBTR = ZDTV3S_DOC_LIFNR-DMBTR.
973| T_BSEG-WMWST = ZDTV3S_DOC_LIFNR-MWSTS.
974|
975| T_BSEG-SGTXT = ZDTV3S_DOC_LIFNR-SGTXT.
976|
977| *
978| * 불공제는 세금금액을 사용함.
979| IF G_NVV EQ SPACE.
980| T_BSEG-WMWST = SPACE.
981| ENDIF.
982| *
983| INCLUDE ZFIR0110_U105P.
984| * INCLUDE ZDTV3I_U105P IF FOUND.
985| *
986| APPEND T_BSEG. CLEAR T_BSEG.
- EN: Builds the vendor line in BSEG format for simulation: company code, fiscal year, line number, account type K, credit indicator H, currency KRW, vendor, reconciliation account, amount and tax (tax cleared unless G_NVV).
- SAP 객체: BSEG
- 업무 키워드: 시뮬레이션, 구매처 항목, 대변, 계정유형, 회계연도
- English: Simulation, BSEG, Account Type K, Credit
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_LIFNR,CN,ZDTV3S_DOC_HEAD,G_NVV - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L936-L986· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BSEG#C3
[calculation] 시뮬레이션용으로 비용 아이템마다 BSEG 항목(계정유형 S·차변 S·KRW·G/L 계정·전기키·금액·지정·세금코드 기본 '**'·사업장·적요)을 순번을 매겨 구성해 추가한다.
990| LOOP AT GT_ITEM WHERE DMBTR NE 0.
991| MOVE-CORRESPONDING GT_ITEM TO T_BSEG.
992|
993| CN = CN + 1.
994| T_BSEG-MANDT = SY-MANDT.
995| T_BSEG-BUKRS = ZDTV3S_DOC_HEAD-BUKRS.
996| T_BSEG-GJAHR = ZDTV3S_DOC_HEAD-BUDAT+0(4).
997| T_BSEG-BUZEI = CN.
998|
999| T_BSEG-KOART = 'S'.
1000| T_BSEG-SHKZG = 'S'.
1001|
1002| T_BSEG-PSWSL = 'KRW'.
1003|
1004| T_BSEG-HKONT = GT_ITEM-HKONT.
1005| T_BSEG-BSCHL = GT_ITEM-BSCHL.
1006| T_BSEG-WRBTR = GT_ITEM-DMBTR.
1007| T_BSEG-ZUONR = GT_ITEM-ZUONR.
1008|
1009|
1010| IF GT_ITEM-FKONT IS INITIAL.
1011| CLEAR : T_BSEG-FKONT.
1012| ENDIF.
1013| IF GT_ITEM-PERNR IS INITIAL.
1014| CLEAR : T_BSEG-PERNR.
1015| ENDIF.
1016| IF GT_ITEM-PROJK IS INITIAL.
1017| CLEAR : T_BSEG-PROJK.
1018| ENDIF.
1019| IF GT_ITEM-BZDAT IS INITIAL.
1020| CLEAR : T_BSEG-BZDAT.
1021| ENDIF.
1022| *
1023| * IF G_NVV EQ 'X' OR G_ZERO EQ 'X'.
1024| T_BSEG-MWSKZ = GT_ITEM-MWSKZ.
1025| * ENDIF.
1026|
1027| IF T_BSEG-MWSKZ IS INITIAL.
1028| T_BSEG-MWSKZ = '**'.
1029| ELSE.
1030| T_BSEG-BUPLA = ZDTV3S_DOC_LIFNR-BUPLA.
1031| ENDIF.
1032| *
1033| T_BSEG-SGTXT = GT_ITEM-SGTXT.
1034| *
1035| INCLUDE ZFIR0110_U106P.
1036| * INCLUDE ZDTV3I_U106P IF FOUND.
1037| *
1038| APPEND T_BSEG. CLEAR T_BSEG.
1039| ENDLOOP.
- EN: For simulation builds a BSEG line per expense item with account type S, debit indicator S, KRW, G/L account, posting key, amount, assignment, tax code (default '**'), business place and text, numbering the lines.
- SAP 객체: BSEG
- 업무 키워드: 시뮬레이션, 비용 항목, 차변, G/L 계정, 세금코드
- English: Simulation, BSEG, Account Type S, Debit
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_ITEM,GT_ITEM,CN,ZDTV3S_DOC_HEAD,ZDTV3S_DOC_LIFNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L990-L1039· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BSEG#C4
FORM MESSAGE_POPUP — ZFIR0110_DOC L1051-L1063 (13줄)
FIMSG 구조의 전기 메시지를 BAPIRET 형식(IT_MSG)으로 변환해 팝업용 메시지 테이블을 만드는 FORM 이다.
이 unit 의 조각 1개가 10/13줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[calculation] Z_FI_DOCUMENT_POSTING 결과 FIMSG 메시지(유형·ID·번호·변수)를 BAPIRET 구조 IS_MSG 로 옮겨 IT_MSG 에 모아 팝업 표시에 사용한다.
1053| LOOP AT PT_FIMSG.
1054| IS_MSG-TYPE = PT_FIMSG-MSGTY.
1055| IS_MSG-ID = PT_FIMSG-MSGID.
1056| IS_MSG-NUMBER = PT_FIMSG-MSGNO.
1057| IS_MSG-MESSAGE_V1 = PT_FIMSG-MSGV1.
1058| IS_MSG-MESSAGE_V2 = PT_FIMSG-MSGV2.
1059| IS_MSG-MESSAGE_V3 = PT_FIMSG-MSGV3.
1060| IS_MSG-MESSAGE_V4 = PT_FIMSG-MSGV4.
1061| APPEND IS_MSG TO IT_MSG.
1062| ENDLOOP.
- EN: Maps each FIMSG posting message (type, id, number, variables) into BAPIRET structure IS_MSG and collects them in IT_MSG for popup display.
- SAP 객체: FIMSG, BAPIRET2
- 업무 키워드: 전기 메시지, 메시지 변환, 오류 목록
- English: FIMSG, BAPIRET2, Message Mapping
- 정의부(복사 시 함께 필요):
IS_MSG,IT_MSG - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1053-L1062· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#MESSAGE_POPUP#C1
FORM MULTI_MSG_POPUPC — ZFIR0110_DOC L1067-L1075 (9줄)
BAPIRET 메시지 테이블을 OXT_MESSAGE_TO_POPUP 으로 팝업 표시하는 헬퍼 FORM 이다.
이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[fm_call] 전기 결과 메시지 목록(BAPIRETTAB)을 OXT_MESSAGE_TO_POPUP 으로 한 번에 팝업으로 보여준다.
1068| CALL FUNCTION 'OXT_MESSAGE_TO_POPUP'
1069| EXPORTING
1070| IT_MESSAGE = PT_MSG
1071| EXCEPTIONS
1072| BAL_ERROR = 1
1073| OTHERS = 2.
- EN: Displays the posting result message table (BAPIRETTAB) in a popup via OXT_MESSAGE_TO_POPUP.
- 호출(파서): OXT_MESSAGE_TO_POPUP
- SAP 객체: OXT_MESSAGE_TO_POPUP, BAPIRETTAB
- 업무 키워드: 메시지 팝업, 전기 결과, 다중 메시지
- English: Message Popup, BAPIRET2
- 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1068-L1073· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC#FORM#MULTI_MSG_POPUPC#C1
MODULE GET_HKONT_TEXT INPUT — ZFIR0110_DOC L1079-L1101 (23줄)
구매처 항목의 G/L 계정(조정계정)이 THKON 에 등록된 처리대상 계정인지 검증하고 SKAT 에서 계정명을 조회하는 PAI 모듈이다.
이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[validation] 입력된 조정계정(HKONT)이 THKON(계정표 기준 조정계정 또는 대체조정계정 ABWHK)에 존재하는지 확인해 없으면 '처리대상 계정이 아닙니다' 오류를 내고, SKAT 에서 계정명 TXT50 을 조회한다.
1081| IF ZDTV3S_DOC_LIFNR-HKONT IS INITIAL.
1082| ZDTV3S_DOC_LIFNR-TXT50 = SPACE.
1083| ELSE.
1084| SELECT SINGLE MANDT INTO SY-MANDT
1085| FROM THKON
1086| WHERE KTOPL EQ T001-KTOPL
1087| AND ( HKONT EQ ZDTV3S_DOC_LIFNR-HKONT
1088| OR ABWHK EQ ZDTV3S_DOC_LIFNR-HKONT ).
1089| IF SY-SUBRC NE 0.
1090| MESSAGE E000 WITH '처리대상 계정이 아닙니다.'.
1091| ENDIF.
1092| *
1093| SELECT SINGLE TXT50 INTO ZDTV3S_DOC_LIFNR-TXT50
1094| FROM SKAT
1095| WHERE SPRAS EQ SY-LANGU
1096| AND KTOPL EQ T001-KTOPL
1097| AND SAKNR EQ ZDTV3S_DOC_LIFNR-HKONT.
1098| *
1099| ENDIF.
- EN: Checks that the vendor reconciliation account exists in THKON (as HKONT or alternative ABWHK) for the chart of accounts, raising an error otherwise, then reads the account text TXT50 from SKAT.
- 테이블(파서): read THKON, SKAT / write -
- SAP 객체: THKON, SKAT, T001
- 업무 키워드: 조정계정, 대체조정계정, 계정 검증, 계정명
- English: Reconciliation Account, Alternative Reconciliation Account, THKON, SKAT
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_LIFNR,T001 - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1081-L1099· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#GET_HKONT_TEXT_INPUT#C1
MODULE GET_HKONT_TEXT2 INPUT — ZFIR0110_DOC L1105-L1124 (20줄)
비용 아이템 G/L 계정(HKONT) 입력 시 SKAT 에서 계정명을 조회하고 없으면 오류로 막는 PAI 모듈이다.
이 unit 의 조각 1개가 16/20줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[validation] 테이블컨트롤 아이템의 G/L 계정이 입력되면 SKAT(계정표 T001-KTOPL, 로그온 언어)에서 계정명 TXT50 을 조회하고 없으면 '계정이 올바르지 않습니다' 오류를 내며 현재 행 번호를 G_LINE 에 보관한다.
1107| IF ZDTV3S_DOC_ITEM-HKONT IS INITIAL.
1108| ZDTV3S_DOC_ITEM-TXT50 = SPACE.
1109| ELSE.
1110| *
1111| SELECT SINGLE TXT50 INTO ZDTV3S_DOC_ITEM-TXT50
1112| FROM SKAT
1113| WHERE SPRAS EQ SY-LANGU
1114| AND KTOPL EQ T001-KTOPL
1115| AND SAKNR EQ ZDTV3S_DOC_ITEM-HKONT.
1116| IF SY-SUBRC NE 0.
1117| MESSAGE E000 WITH '계정이 올바르지 않습니다.'.
1118| ENDIF.
1119| *
1120| G_LINE = TC_100-CURRENT_LINE.
1121| *
1122| ENDIF.
- EN: Validates the item G/L account by reading its TXT50 from SKAT for the company's chart of accounts and raises an error when the account does not exist, remembering the table control line.
- 테이블(파서): read SKAT / write -
- SAP 객체: SKAT, T001
- 업무 키워드: G/L 계정 검증, 계정명, 비용 항목, 테이블컨트롤
- English: G/L Account, Chart of Accounts, SKAT, Validation
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_ITEM,T001,G_LINE,TC_100 - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1107-L1122· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#GET_HKONT_TEXT2_INPUT#C1
MODULE SET_ZFBDT INPUT — ZFIR0110_DOC L1188-L1211 (24줄)
지급조건·증빙일·전기일로 FI_FIND_PAYMENT_CONDITIONS 를 호출해 지급기준일(ZFBDT)과 현금할인 조건을 결정하는 PAI 모듈이다.
이 unit 의 조각 1개가 17/24줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[fm_call] 구매처 항목의 지급조건(ZTERM)·증빙일(BLDAT)·전기일(BUDAT)·회사코드로 FI_FIND_PAYMENT_CONDITIONS 를 호출해 지급기준일(ZFBDT)과 현금할인 조건(GS_SKLIN)을 산출한다.
1193| CLEAR : GS_SKLIN.
1194| CALL FUNCTION 'FI_FIND_PAYMENT_CONDITIONS'
1195| EXPORTING
1196| I_ZTERM = ZDTV3S_DOC_LIFNR-ZTERM
1197| I_BLDAT = ZDTV3S_DOC_HEAD-BLDAT
1198| I_BUDAT = ZDTV3S_DOC_HEAD-BUDAT
1199| I_ZFBDT = ZDTV3S_DOC_LIFNR-ZFBDT
1200| I_BUKRS = ZDTV3S_DOC_HEAD-BUKRS
1201| IMPORTING
1202| E_ZFBDT = ZDTV3S_DOC_LIFNR-ZFBDT
1203| E_SKLIN = GS_SKLIN
1204| EXCEPTIONS
1205| TERMS_INCORRECT = 1
1206| TERMS_NOT_FOUND = 2
1207| NO_DATE_ENTERED = 3
1208| NO_DAY_LIMIT_FOUND = 4
1209| OTHERS = 5.
- EN: Calls FI_FIND_PAYMENT_CONDITIONS with payment terms, document date, posting date and company code to derive the baseline date ZFBDT and cash discount terms GS_SKLIN.
- 호출(파서): FI_FIND_PAYMENT_CONDITIONS
- SAP 객체: FI_FIND_PAYMENT_CONDITIONS, T052
- 업무 키워드: 지급조건, 지급기준일, 현금할인, 증빙일, 전기일
- English: Payment Terms, Baseline Date, Cash Discount, FI_FIND_PAYMENT_CONDITIONS
- 정의부(복사 시 함께 필요):
GS_SKLIN,ZDTV3S_DOC_LIFNR,ZDTV3S_DOC_HEAD - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1193-L1209· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#SET_ZFBDT_INPUT#C1
MODULE SET_GTEXT INPUT — ZFIR0110_DOC L1224-L1234 (11줄)
사업영역(GSBER) 입력 시 TGSBT 에서 사업영역 텍스트를 조회해 화면에 표시하는 PAI 모듈이다.
이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[sql_select] 입력된 사업영역(GSBER)의 명칭 GTEXT 를 TGSBT 에서 로그온 언어로 조회하고 없으면 텍스트를 지운다.
1226| SELECT SINGLE GTEXT INTO ZDTV3S_DOC_LIFNR-GTEXT
1227| FROM TGSBT
1228| WHERE SPRAS EQ SY-LANGU
1229| AND GSBER EQ ZDTV3S_DOC_LIFNR-GSBER.
1230| IF SY-SUBRC NE 0.
1231| CLEAR : ZDTV3S_DOC_LIFNR-GTEXT.
1232| ENDIF.
- EN: Reads the business area text GTEXT from TGSBT for the entered GSBER in the logon language, clearing it when not found.
- 테이블(파서): read TGSBT / write -
- SAP 객체: TGSBT
- 업무 키워드: 사업영역, 사업영역 텍스트, 전표 입력
- English: Business Area, TGSBT
- 정의부(복사 시 함께 필요):
ZDTV3S_DOC_LIFNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1226-L1232· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#SET_GTEXT_INPUT#C1
MODULE SET_NAME INPUT — ZFIR0110_DOC L1238-L1248 (11줄)
사업장(BUPLA) 입력 시 J_1BBRANCH 에서 사업장명을 조회해 화면에 표시하는 PAI 모듈이다.
이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[sql_select] 회사코드·사업장(BUPLA)으로 J_1BBRANCH 에서 사업장명 NAME 을 조회하고 없으면 지운다.
1240| SELECT SINGLE NAME INTO ZDTV3S_DOC_LIFNR-NAME
1241| FROM J_1BBRANCH
1242| WHERE BUKRS EQ ZDTV3S_DOC_HEAD-BUKRS
1243| AND BRANCH EQ ZDTV3S_DOC_LIFNR-BUPLA.
1244| IF SY-SUBRC NE 0.
1245| CLEAR : ZDTV3S_DOC_LIFNR-NAME.
1246| ENDIF.
- EN: Reads the business place name from J_1BBRANCH for the company code and BUPLA, clearing it when not found.
- 테이블(파서): read J_1BBRANCH / write -
- SAP 객체: J_1BBRANCH
- 업무 키워드: 사업장, 사업장명, 세금계산서, 회사코드
- English: Business Place, J_1BBRANCH
- 정의부(복사 시 함께 필요):
NAME,ZDTV3S_DOC_LIFNR,ZDTV3S_DOC_HEAD - 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC#L1240-L1246· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC#MODULE#SET_NAME_INPUT#C1
FORM ZTERM_PROCESS — ZFIR0110_DOC_F01 L343-L362 (20줄)
공급업체 라인의 지급조건(ZTERM)으로 T052 에서 지급일수(ZSTG1)를 읽어 ZBD1T 에 설정하는 루틴이다.
이 unit 의 조각 1개가 9/20줄(45%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[sql_select] 지급조건 마스터 T052 에서 ZTERM 의 첫 번째 지급일수(ZSTG1)를 조회해 공급업체 전표 라인의 지급일수(ZBD1T)로 설정하고, 없으면 비운다.
350| SELECT SINGLE ZSTG1 INTO L_ZSTG1
351| FROM T052
352| WHERE ZTERM = ZDTV3S_DOC_LIFNR-ZTERM.
353|
354| IF SY-SUBRC NE 0.
355| CLEAR : ZDTV3S_DOC_LIFNR-ZBD1T.
356| ELSE.
357| ZDTV3S_DOC_LIFNR-ZBD1T = L_ZSTG1.
358| ENDIF.
- EN: Look up the first payment days (ZSTG1) of the payment term in T052 and set it as ZBD1T on the vendor document line, clearing it if not found.
- 테이블(파서): read T052 / write -
- SAP 객체: T052, ZDTV3S_DOC_LIFNR
- 업무 키워드: 지급조건, 지급일수, 공급업체 전표, 현금할인 일수
- English: Payment Terms, T052, Days 1, Vendor Line Item
- 정의부(복사 시 함께 필요):
L_ZSTG1,ZDTV3S_DOC_LIFNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L350-L358· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#FORM#ZTERM_PROCESS#C1
MODULE SET_F4_HKONT INPUT — ZFIR0110_DOC_F01 L23-L224 (202줄)
공급업체 라인의 G/L 조정계정(HKONT) F4 도움말로 THKON 에 허용된 대체 조정계정(Alternative Reconciliation Account) 목록을 보여주고 선택 계정과 계정명(SKAT)을 화면에 반영하는 PAI 모듈이다.
이 unit 의 조각 4개가 101/202줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[sql_select] THKON 에서 회사코드 계정과목표(T001-KTOPL)와 기준 조정계정(GV_HKONT)에 허용된 대체 조정계정 목록을 읽는다.
88| SELECT * FROM THKON INTO TABLE HKOTAB
89| WHERE KTOPL = T001-KTOPL
90| AND HKONT = L_SAKNR. "Note1742955
- EN: Read the alternative reconciliation accounts allowed for the chart of accounts and the original reconciliation account from THKON.
- 테이블(파서): read THKON / write -
- SAP 객체: THKON, T001
- 업무 키워드: 대체 조정계정, 조정계정, 계정과목표, 공급업체
- English: Alternative Reconciliation Account, THKON, Chart of Accounts
- 정의부(복사 시 함께 필요):
HKOTAB,T001,HKONT,L_SAKNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L88-L90· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_HKONT_INPUT#C1
[aggregation] 허용 대체계정마다 계정번호·단축키·READ_HAUPTBUCH_TEXT 로 읽은 SKAT 계정명을 F4 값 테이블(VALTAB)에 넣고, 원래 조정계정이 목록에 없으면 마지막에 추가한다.
111| REFRESH VALTAB.
112| XORIG = SPACE.
113| LOOP AT HKOTAB.
114| VALTAB-FELD = HKOTAB-ABWHK.
115| APPEND VALTAB.
116| VALTAB-FELD = HKOTAB-KRZKY.
117| APPEND VALTAB.
118| CLEAR HSKAT.
119| CALL FUNCTION 'READ_HAUPTBUCH_TEXT'
120| EXPORTING
121| KONTENPLAN = T001-KTOPL
122| SACHKONTO = HKOTAB-ABWHK
123| SPRACHE = SY-LANGU
124| IMPORTING
125| TEXT_WA = HSKAT
126| EXCEPTIONS
127| OTHERS = 0.
128| VALTAB-FELD = HSKAT-TXT50.
129| APPEND VALTAB.
130| IF HKOTAB-ABWHK = L_SAKNR. "Note1742955
131| XORIG = 'X'.
132| ENDIF.
133| ENDLOOP.
134|
135| *------- Original-Hauptbuchkonto einf#gen ------------------------------
136| IF XORIG = SPACE.
137| VALTAB-FELD = L_SAKNR. "Note1742955
138| APPEND VALTAB.
139| VALTAB-FELD = SPACE.
140| APPEND VALTAB.
141| CLEAR HSKAT.
142| CALL FUNCTION 'READ_HAUPTBUCH_TEXT'
143| EXPORTING
144| KONTENPLAN = T001-KTOPL
145| SACHKONTO = L_SAKNR "Note1742955
146| SPRACHE = SY-LANGU
147| IMPORTING
148| TEXT_WA = HSKAT
149| EXCEPTIONS
150| OTHERS = 0.
151| VALTAB-FELD = HSKAT-TXT50.
152| APPEND VALTAB.
153| ENDIF.
- EN: Build the F4 value table with account, short key and G/L account text (READ_HAUPTBUCH_TEXT) for each alternative account, appending the original reconciliation account if it is not in the list.
- 호출(파서): READ_HAUPTBUCH_TEXT, READ_HAUPTBUCH_TEXT
- SAP 객체: READ_HAUPTBUCH_TEXT, SKAT, THKON
- 업무 키워드: F4 값 목록, 계정명 조회, 대체 조정계정, 원래 조정계정
- English: G/L Account Text, READ_HAUPTBUCH_TEXT, SKAT, Value Table
- 정의부(복사 시 함께 필요):
VALTAB,XORIG,HKOTAB,HSKAT,T001,L_SAKNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L111-L153· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_HKONT_INPUT#C2
[fm_call] 화면 필드의 입력 가능 여부를 DYNP_VALUES_READ 로 확인한 뒤 HELP_VALUES_GET_WITH_TABLE 로 대체 조정계정 히트리스트를 띄우고 선택 계정을 ZDTV3S_DOC_LIFNR-HKONT 에 넣는다.
158| PERFORM DYNP_VALUES_READ
159| USING 'ZDTV3S_DOC_LIFNR-HKONT' F4RC.
160|
161| TRANSLATE F4HLP-FIELDINP USING ' XX '.
162|
163| *------- Eingabem#glichkeiten anzeigen ---------------------------------
164| CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE'
165| EXPORTING
166| DISPLAY = F4HLP-FIELDINP
167| FIELDNAME = 'HKONT'
168| TABNAME = 'ZDTV3S_DOC_LIFNR'
169| IMPORTING
170| SELECT_VALUE = HKONT
171| TABLES
172| FIELDS = FLDTAB
173| VALUETAB = VALTAB.
174|
175| IF NOT HKONT IS INITIAL.
176| ZDTV3S_DOC_LIFNR-HKONT = HKONT.
- EN: Check field input status via DYNP_VALUES_READ, show the alternative reconciliation account hit list with HELP_VALUES_GET_WITH_TABLE, and store the chosen account in the vendor line.
- 호출(파서): DYNP_VALUES_READ, HELP_VALUES_GET_WITH_TABLE
- SAP 객체: HELP_VALUES_GET_WITH_TABLE, DYNP_VALUES_READ, ZDTV3S_DOC_LIFNR
- 업무 키워드: F4 히트리스트, 조정계정 선택, 화면 입력 모드
- English: HELP_VALUES_GET_WITH_TABLE, Reconciliation Account, Search Help
- 정의부(복사 시 함께 필요):
F4RC,F4HLP,HKONT,FLDTAB,VALTAB,ZDTV3S_DOC_LIFNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L158-L176· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_HKONT_INPUT#C3
[sql_select] 선택한 계정번호를 ALPHA 변환 후 SKAT 에서 계정명(TXT50)을 조회하고 DYNP_VALUES_UPDATE 로 화면 필드 ZDTV3S_DOC_LIFNR-TXT50 에 계정명을 표시한다.
184| PERFORM CONVERSION_EXIT_ALPHA_INPUT(ZTR_POOL) USING L_HKONT.
185|
186| * 화면 필드 선언 -> 선택된 값을 화면 필드에 뿌려줄때 사용.
187| DATA: SCR_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
188|
189| DATA: L_TXT50(50).
190| SELECT SINGLE TXT50 INTO L_TXT50
191| FROM SKAT
192| WHERE SPRAS EQ SY-LANGU
193| AND KTOPL EQ T001-KTOPL
194| AND SAKNR EQ L_HKONT.
195|
196| SCR_FIELDS-FIELDNAME = 'ZDTV3S_DOC_LIFNR-TXT50'. "반드시 대문자.
197| SCR_FIELDS-FIELDVALUE = L_TXT50.
198| APPEND SCR_FIELDS.
199|
200| CALL FUNCTION 'DYNP_VALUES_UPDATE'
201| EXPORTING
202| DYNAME = SY-CPROG
203| DYNUMB = SY-DYNNR
204| TABLES
205| DYNPFIELDS = SCR_FIELDS
206| EXCEPTIONS
207| INVALID_ABAPWORKAREA = 1
208| INVALID_DYNPROFIELD = 2
209| INVALID_DYNPRONAME = 3
210| INVALID_DYNPRONUMMER = 4
211| INVALID_REQUEST = 5
212| NO_FIELDDESCRIPTION = 6
213| UNDEFIND_ERROR = 7
214| OTHERS = 8.
215|
216| IF SY-SUBRC <> 0.
217| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
218| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
219| ENDIF.
- EN: Convert the selected account with ALPHA input, read its description from SKAT, and push the text to screen field ZDTV3S_DOC_LIFNR-TXT50 via DYNP_VALUES_UPDATE.
- 테이블(파서): read SKAT / write -
- 호출(파서): CONVERSION_EXIT_ALPHA_INPUT, DYNP_VALUES_UPDATE
- SAP 객체: SKAT, DYNP_VALUES_UPDATE, CONVERSION_EXIT_ALPHA_INPUT
- 업무 키워드: 계정명 조회, G/L 계정 텍스트, 화면 필드 갱신
- English: G/L Account Text, SKAT, DYNP_VALUES_UPDATE
- 정의부(복사 시 함께 필요):
L_HKONT,T001 - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L184-L219· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_HKONT_INPUT#C4
MODULE SET_F4_ZTERM INPUT — ZFIR0110_DOC_F01 L286-L339 (54줄)
공급업체 전표 입력 화면에서 지급조건(ZTERM) F4 도움말을 띄우고 선택값에 따른 지급기일(ZBD1T)을 화면 필드에 반영하는 PAI 모듈이다.
이 unit 의 조각 2개가 40/54줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[fm_call] FI 표준 지급조건 F4 도움말 FM FI_F4_ZTERM 을 호출해 사용자가 선택한 지급조건(Payment Term, T052-ZTERM)을 받는다.
296| CALL FUNCTION 'FI_F4_ZTERM'
297| EXPORTING
298| I_KOART = KOART
299| I_ZTERM = L_ZTERM
300| I_XSHOW = L_XSHOW
301| IMPORTING
302| E_ZTERM = ZTERM.
- EN: Invoke the standard FI payment terms search help FI_F4_ZTERM and receive the selected payment term.
- 호출(파서): FI_F4_ZTERM
- SAP 객체: FI_F4_ZTERM, T052
- 업무 키워드: 지급조건, F4 도움말, 공급업체 전표
- English: Payment Terms, Search Help, FI_F4_ZTERM
- 정의부(복사 시 함께 필요):
KOART,L_ZTERM,L_XSHOW,ZTERM - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L296-L302· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_ZTERM_INPUT#C1
[control_flow] 선택된 지급조건을 ZDTV3S_DOC_LIFNR-ZTERM 에 넣고 ZTERM_PROCESS 로 T052 의 지급일수(ZBD1T)를 구한 뒤 DYNP_VALUES_UPDATE 로 화면 필드 ZBD1T 를 갱신한다.
304| IF NOT ZTERM IS INITIAL AND XSHOW IS INITIAL.
305| ZDTV3S_DOC_LIFNR-ZTERM = ZTERM.
306|
307| PERFORM ZTERM_PROCESS.
308|
309| DATA: LDAY(3).
310| LDAY = ZDTV3S_DOC_LIFNR-ZBD1T.
311|
312| SCR_FIELDS-FIELDNAME = 'ZDTV3S_DOC_LIFNR-ZBD1T'. "반드시 대문자.
313| SCR_FIELDS-FIELDVALUE = LDAY.
314| APPEND SCR_FIELDS.
315|
316| CALL FUNCTION 'DYNP_VALUES_UPDATE'
317| EXPORTING
318| DYNAME = SY-CPROG
319| DYNUMB = SY-DYNNR
320| TABLES
321| DYNPFIELDS = SCR_FIELDS
322| EXCEPTIONS
323| INVALID_ABAPWORKAREA = 1
324| INVALID_DYNPROFIELD = 2
325| INVALID_DYNPRONAME = 3
326| INVALID_DYNPRONUMMER = 4
327| INVALID_REQUEST = 5
328| NO_FIELDDESCRIPTION = 6
329| UNDEFIND_ERROR = 7
330| OTHERS = 8.
331|
332| IF SY-SUBRC <> 0.
333| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
334| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
335| ENDIF.
336| ENDIF.
- EN: Store the chosen payment term in the vendor line, derive the days-1 (ZBD1T) via ZTERM_PROCESS and push it to the screen field with DYNP_VALUES_UPDATE.
- 호출(파서): ZTERM_PROCESS, DYNP_VALUES_UPDATE
- SAP 객체: DYNP_VALUES_UPDATE, ZDTV3S_DOC_LIFNR, T052
- 업무 키워드: 지급조건 반영, 지급일수, 화면 필드 갱신, 공급업체 라인
- English: Payment Term, Cash Discount Days, DYNP_VALUES_UPDATE, Vendor Line
- 정의부(복사 시 함께 필요):
ZTERM,ZDTV3S_DOC_LIFNR - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L304-L336· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_ZTERM_INPUT#C2
MODULE SET_F4_BUPLA INPUT — ZFIR0110_DOC_F01 L368-L458 (91줄)
전표 항목의 사업장(BUPLA, Business Place) F4 도움말로 J_1BBRANCH 목록을 보여주고 선택값을 ZDTV3S_DOC_ITEM-BUPLA 에 넣는 PAI 모듈이다.
이 unit 의 조각 2개가 50/91줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[sql_select] 사업장 마스터 J_1BBRANCH 에서 사업장 코드와 명칭을 전부 읽어 F4 표시용 값 테이블(IT_VALUE)로 옮기고, 자료가 없으면 메시지 후 종료한다.
402| SELECT BRANCH NAME INTO TABLE IT_J_1BBRANCH
403| FROM J_1BBRANCH.
404|
405| LOOP AT IT_J_1BBRANCH.
406| IT_VALUE-TEXT1 = IT_J_1BBRANCH-BRANCH.
407| IT_VALUE-TEXT2 = IT_J_1BBRANCH-NAME.
408| APPEND IT_VALUE.
409| CLEAR IT_VALUE.
410| ENDLOOP.
411|
412| * 검색된 자료의 존재 여부.
413| IF SY-SUBRC <> 0.
414| MESSAGE S000 WITH '해당 자료가 없습니다.'.
415| EXIT.
416| ENDIF.
- EN: Read all business places (code and name) from J_1BBRANCH into the F4 value list and exit with a message when nothing is found.
- 테이블(파서): read J_1BBRANCH / write -
- SAP 객체: J_1BBRANCH
- 업무 키워드: 사업장, F4 값 목록, 사업장 마스터
- English: Business Place, J_1BBRANCH, Value List
- 정의부(복사 시 함께 필요):
NAME,IT_J_1BBRANCH,IT_VALUE - 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L402-L416· confidence 0.9 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_BUPLA_INPUT#C1
[fm_call] 표시 필드(BRANCH 선택, NAME)를 정의하고 HELP_VALUES_GET_NO_DD_NAME 으로 사업장 히트리스트를 띄운 뒤 선택한 사업장을 전표 항목 필드 BUPLA 에 설정한다.
420| IT_FIELDS-TABNAME = 'J_1BBRANCH'.
421| IT_FIELDS-FIELDNAME = 'BRANCH'.
422| IT_FIELDS-SELECTFLAG = 'X'. "실제 선택되는 값에 'X' 표시
423| APPEND IT_FIELDS.
424|
425|
426|
427| IT_FIELDS-TABNAME = 'J_1BBRANCH'.
428| IT_FIELDS-FIELDNAME = 'NAME'.
429| IT_FIELDS-SELECTFLAG = ' '.
430| APPEND IT_FIELDS.
431|
432|
433| * F4기능 부분
434| CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
435| EXPORTING
436| SELECTFIELD = SELECTFIELD
437| IMPORTING
438| IND = LD_TABIX
439| SELECT_VALUE = SELECT_VALUE
440| TABLES
441| FIELDS = IT_FIELDS
442| FULL_TABLE = IT_VALUE
443| EXCEPTIONS
444| FULL_TABLE_EMPTY = 1
445| NO_TABLESTRUCTURE_GIVEN = 2
446| NO_TABLEFIELDS_IN_DICTIONARY = 3
447| MORE_THEN_ONE_SELECTFIELD = 4
448| NO_SELECTFIELD = 5
449| OTHERS = 6.
450|
451| * Double Click시 값을 화면에 Display
452| CHECK NOT LD_TABIX IS INITIAL.
453| READ TABLE IT_VALUE INDEX LD_TABIX.
454| ZDTV3S_DOC_ITEM-BUPLA = SELECT_VALUE.
- EN: Define hit-list columns and show the business place list via HELP_VALUES_GET_NO_DD_NAME, then set the selected value into ZDTV3S_DOC_ITEM-BUPLA.
- 호출(파서): HELP_VALUES_GET_NO_DD_NAME
- SAP 객체: HELP_VALUES_GET_NO_DD_NAME, ZDTV3S_DOC_ITEM, J_1BBRANCH
- 업무 키워드: F4 히트리스트, 사업장 선택, 전표 항목
- English: Search Help, HELP_VALUES_GET_NO_DD_NAME, Business Place
- 정의부(복사 시 함께 필요):
IT_FIELDS,SELECTFIELD,LD_TABIX,SELECT_VALUE,IT_VALUE,ZDTV3S_DOC_ITEM - 위치:
abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L420-L454· confidence 0.85 ·ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_BUPLA_INPUT#C2
정의부 (73건)
로직 조각을 다른 프로그램으로 옮겨 붙일 때 함께 가야 하는 선언이다. 조각별로 무엇이 필요한지는 위 조각 항목의 정의부 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 GET /chunks/<chunk_id> 의 declaration_code 로 받는다.
ZFIR0110_104P (1건)
L_LINE — data · L4-L4
DATA : L_LINE TYPE I.
ZFIR0110_DOC (51건)
ICON — type-pool · L20-L20
TYPE-POOLS: ICON.
T001 — tables · L22-L22
TABLES : T001 .
T020 — tables · L23-L23
TABLES:
T020.
ZDTV3T_AP_HEAD — tables · L24-L24
TABLES:
ZDTV3T_AP_HEAD.
BKPF — tables · L25-L25
TABLES:
BKPF .
BSEC — tables · L26-L26
TABLES:
BSEC .
BSEG — tables · L27-L27
TABLES:
BSEG .
A003 — tables · L28-L28
TABLES:
A003 .
ZDTV3S_DOC_HEAD — tables · L29-L29
TABLES:
ZDTV3S_DOC_HEAD.
ZDTV3S_DOC_LIFNR — tables · L30-L30
TABLES:
ZDTV3S_DOC_LIFNR.
ZDTV3S_DOC_ITEM — tables · L31-L31
TABLES:
ZDTV3S_DOC_ITEM.
GT_MAIN — data · L35-L43
DATA: BEGIN OF GT_MAIN OCCURS 0,
MARK LIKE ICON-STATUS,
ZICON(4).
INCLUDE STRUCTURE ZDTV3T_AP_HEAD.
DATA: BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR.
DATA: CELLTAB TYPE LVC_T_STYL,
SCOL TYPE LVC_T_SCOL,
END OF GT_MAIN.
GT_TABLE — data · L45-L45
DATA: GT_TABLE LIKE TABLE OF GT_MAIN WITH HEADER LINE.
GV_HKONT — data · L49-L49
DATA: GV_HKONT LIKE BSEG-HKONT.
GT_ITEM — data · L53-L53
DATA : GT_ITEM LIKE ZDTV3S_DOC_ITEM OCCURS 0 WITH HEADER LINE.
GT_IMSI — data · L55-L55
DATA : GT_IMSI LIKE ZDTV3S_DOC_ITEM OCCURS 0 WITH HEADER LINE.
TMP_ITEM — data · L57-L57
DATA : TMP_ITEM LIKE ZDTV3S_DOC_ITEM.
GS_ITEM_NVV — data · L58-L58
DATA : GS_ITEM_NVV LIKE ZDTV3S_DOC_ITEM.
GS_SKLIN — data · L59-L59
DATA: GS_SKLIN LIKE SKLIN.
TC_100 — controls · L61-L61
CONTROLS TC_100 TYPE TABLEVIEW USING SCREEN '0100'.
IS_INVOICE — data · L63-L74
DATA : BEGIN OF IS_INVOICE.
INCLUDE STRUCTURE ZDTV3S_HEADKEY.
INCLUDE STRUCTURE ZDTV3S_HEAD_INV.
INCLUDE STRUCTURE ZDTV3S_HEAD_SU.
INCLUDE STRUCTURE ZDTV3S_HEAD_IP.
INCLUDE STRUCTURE ZDTV3S_HEAD_BP.
INCLUDE STRUCTURE ZDTV3S_HEAD_AMT.
INCLUDE STRUCTURE ZDTV3S_HEAD_CONT.
INCLUDE STRUCTURE ZDTV3S_EXT_AP_CUS.
INCLUDE STRUCTURE ZDTV3S_EXT_AP_USR.
INCLUDE STRUCTURE ZDTV3S_EXT_AP_ADD.
DATA: END OF IS_INVOICE.
IT_MSG — data · L77-L77
DATA : IT_MSG TYPE BAPIRETTAB .
IS_MSG — data · L78-L78
DATA:
IS_MSG LIKE BAPIRET2.
G_BUKRS — data · L80-L80
DATA : G_BUKRS TYPE BUKRS .
G_BELNR — data · L81-L81
DATA:
G_BELNR TYPE BELNR_D.
G_GJAHR — data · L82-L82
DATA:
G_GJAHR TYPE GJAHR .
G_INV_SEQ — data · L83-L83
DATA:
G_INV_SEQ TYPE ZDTV3E_INV_SEQ.
OK_CODE — data · L84-L84
DATA:
OK_CODE LIKE SY-UCOMM.
G_LINE — data · L85-L85
DATA:
G_LINE TYPE I .
G_NVV — data · L86-L86
DATA:
G_NVV .
G_ZERO — data · L87-L87
DATA:
G_ZERO .
G_HKONT — data · L88-L88
DATA:
G_HKONT TYPE HKONT.
G_STAT — data · L89-L89
DATA:
G_STAT VALUE 'N'.
VRM — type-pool · L93-L93
TYPE-POOLS: VRM.
NAME — data · L94-L94
DATA: NAME TYPE VRM_ID.
LIST — data · L95-L95
DATA:
LIST TYPE VRM_VALUES.
VALUE — data · L96-L96
DATA:
VALUE LIKE LINE OF LIST.
— field-symbol · L100-L100
FIELD-SYMBOLS <FS>.
FIELD — data · L101-L101
DATA : FIELD(30).
D_ALPHA — macro · L103-L109
DEFINE D_ALPHA.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = &1
IMPORTING
OUTPUT = &1.
END-OF-DEFINITION.
L_CHAR — data · unit 로컬 · L275-L275
DATA : L_CHAR.
L_FIELD — data · unit 로컬 · L277-L277
DATA : L_FIELD(30) .
L_POS — data · unit 로컬 · L278-L278
DATA:
L_POS TYPE I.
L_OK — data · unit 로컬 · L631-L631
DATA : L_OK.
L_MODE — data · unit 로컬 · L632-L632
DATA : L_MODE.
LT_BKPF — data · unit 로컬 · L633-L633
DATA : LT_BKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE.
LT_BSEG — data · unit 로컬 · L634-L634
DATA : LT_BSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE.
LT_MSG — data · unit 로컬 · L635-L635
DATA : LT_MSG LIKE FIMSG OCCURS 0 WITH HEADER LINE.
T_BKPF — data · unit 로컬 · L637-L637
DATA : T_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE.
T_BSEG — data · unit 로컬 · L638-L638
DATA : T_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE.
CN — data · unit 로컬 · L823-L823
DATA: CN LIKE BSEG-BUZEI.
ZFIR0110_DOC_F01 (21건)
HKOTAB — data · unit 로컬 · L26-L28
DATA: BEGIN OF HKOTAB OCCURS 2.
INCLUDE STRUCTURE THKON.
DATA: END OF HKOTAB.
FLDTAB — data · unit 로컬 · L32-L34
DATA: BEGIN OF FLDTAB OCCURS 2.
INCLUDE STRUCTURE HELP_VALUE.
DATA: END OF FLDTAB.
VALTAB — data · unit 로컬 · L38-L40
DATA: BEGIN OF VALTAB OCCURS 10,
FELD(50) TYPE C,
END OF VALTAB.
F4RC — data · unit 로컬 · L50-L50
DATA:
F4RC LIKE SY-SUBRC. " Return-Code
F4HLP — data · unit 로컬 · L56-L58
DATA: BEGIN OF F4HLP OCCURS 1.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF F4HLP.
HKONT — data · unit 로컬 · L62-L62
DATA: HKONT LIKE BSEG-HKONT.
HSKAT — data · unit 로컬 · L63-L63
DATA:
HSKAT LIKE SKAT.
XORIG — data · unit 로컬 · L65-L65
DATA:
XORIG(1) TYPE C.
L_SAKNR — data · unit 로컬 · L66-L66
DATA:
L_SAKNR LIKE BSEG-SAKNR. " Note1742955
L_HKONT — data · unit 로컬 · L180-L180
DATA: L_HKONT LIKE SKAT-SAKNR.
KOART — data · unit 로컬 · L291-L291
DATA: KOART LIKE BSEG-KOART. "Rel. acc. type for screen det.
L_ZTERM — data · unit 로컬 · L292-L292
DATA: L_ZTERM LIKE T052-ZTERM.
L_XSHOW — data · unit 로컬 · L293-L293
DATA: L_XSHOW LIKE RFCU4-FLAGX.
ZTERM — data · unit 로컬 · L294-L294
DATA: ZTERM LIKE T052-ZTERM.
L_ZSTG1 — data · unit 로컬 · L345-L345
DATA: L_ZSTG1 LIKE T052-ZSTG1.
SELECTFIELD — data · unit 로컬 · L374-L374
DATA : SELECTFIELD LIKE HELP_INFO-FIELDNAME.
IT_FIELDS — data · unit 로컬 · L375-L375
DATA:
IT_FIELDS LIKE HELP_VALUE OCCURS 1 WITH HEADER LINE.
SELECT_VALUE — data · unit 로컬 · L376-L376
DATA:
SELECT_VALUE LIKE HELP_INFO-FLDVALUE.
LD_TABIX — data · unit 로컬 · L377-L377
DATA:
LD_TABIX LIKE SY-TABIX.
IT_J_1BBRANCH — data · unit 로컬 · L383-L386
DATA : BEGIN OF IT_J_1BBRANCH OCCURS 0,
BRANCH LIKE J_1BBRANCH-BRANCH,
NAME LIKE J_1BBRANCH-NAME,
END OF IT_J_1BBRANCH.
IT_VALUE — data · unit 로컬 · L388-L391
DATA : BEGIN OF IT_VALUE OCCURS 0,
TEXT1(12),
TEXT2(80),
END OF IT_VALUE.
Unit 목록 (컨테이너)
| unit | 유형 | 위치 | 조각 | 한 줄 요약 |
|---|---|---|---|---|
| START-OF-SELECTION | EVENT | ZFIR0110_DOC L120-141 | 0 | 호출 파라미터로 세금계산서 데이터를 세팅(SET_DATA)하는 시작 이벤트다. |
| END-OF-SELECTION | EVENT | ZFIR0110_DOC L142-150 | 0 | 선택 처리 후 전표 입력 화면 0100 을 호출하는 이벤트다. |
| STATUS_0100 OUTPUT | MODULE | ZFIR0110_DOC L151-154 | 0 | 화면 0100 의 PF-STATUS 와 타이틀을 설정하는 PBO 모듈이다. |
| EXIT INPUT | MODULE | ZFIR0110_DOC L158-160 | 0 | 화면 0100 을 닫는 EXIT 모듈이다. |
| INIT_DATA OUTPUT | MODULE | ZFIR0110_DOC L164-237 | 2 | 화면 최초 표시 시 회사코드·세금계산서 번호를 검증하고 T001 과 세금계산서(ZDTV3T_AP_HEAD/EXT)를 읽어 화면 초기 데이터를 세팅하는 PBO 모듈이다. |
| MODIFY_DATA INPUT | MODULE | ZFIR0110_DOC L241-248 | 0 | 테이블컨트롤 현재 행의 입력값을 GT_ITEM 내부테이블에 반영하는 PAI 모듈이다. |
| GET_TEXT INPUT | MODULE | ZFIR0110_DOC L252-270 | 1 | 구매처 입력 시 LFB1 에서 조정계정·지급조건을, LFA1 에서 구매처명을 조회해 화면에 채우는 PAI 모듈이다. |
| USER_COMMAND_0100 INPUT | MODULE | ZFIR0110_DOC L274-578 | 8 | 화면 0100 의 기능코드(점검·붙여넣기·엔터·1회성/직원 거래처·행 추가/삭제·시뮬레이션·저장)를 처리하는 메인 PAI 모듈이다. |
| CHECK_DATA | FORM | ZFIR0110_DOC L582-619 | 2 | 전표 입력값을 전기 전에 검증한다 — 불공제 세금코드 판정, 과세/영세 세금코드와 세액의 정합성 확인. |
| POST | FORM | ZFIR0110_DOC L623-795 | 4 | 전표 헤더·아이템을 구성한 뒤 시뮬레이션(ZFIR0130 호출) 또는 Z_FI_DOCUMENT_POSTING 실제 전기를 수행하고 성공 시 세금계산서 테이블에 전표번호를 기록하는 FORM 이다. |
| SET_BKPF | FORM | ZFIR0110_DOC L799-816 | 1 | 화면 헤더(ZDTV3S_DOC_HEAD)를 BBKPF 전표 헤더로 옮기고 자동세금계산 해제·세션 종료 플래그를 세팅하는 FORM 이다. |
| SET_BSEG | FORM | ZFIR0110_DOC L820-1047 | 4 | 세금계산서 매입전표의 구매처 항목과 비용 항목을 BBSEG(전기용)와 BSEG(시뮬레이션용) 두 가지 형식으로 구성하는 FORM 이다. |
| MESSAGE_POPUP | FORM | ZFIR0110_DOC L1051-1063 | 1 | FIMSG 구조의 전기 메시지를 BAPIRET 형식(IT_MSG)으로 변환해 팝업용 메시지 테이블을 만드는 FORM 이다. |
| MULTI_MSG_POPUPC | FORM | ZFIR0110_DOC L1067-1075 | 1 | BAPIRET 메시지 테이블을 OXT_MESSAGE_TO_POPUP 으로 팝업 표시하는 헬퍼 FORM 이다. |
| GET_HKONT_TEXT INPUT | MODULE | ZFIR0110_DOC L1079-1101 | 1 | 구매처 항목의 G/L 계정(조정계정)이 THKON 에 등록된 처리대상 계정인지 검증하고 SKAT 에서 계정명을 조회하는 PAI 모듈이다. |
| GET_HKONT_TEXT2 INPUT | MODULE | ZFIR0110_DOC L1105-1124 | 1 | 비용 아이템 G/L 계정(HKONT) 입력 시 SKAT 에서 계정명을 조회하고 없으면 오류로 막는 PAI 모듈이다. |
| SUM_AMT | FORM | ZFIR0110_DOC L1128-1166 | 2 | 구매처 항목과 비용 아이템의 차변·대변 합계를 계산해 전표 균형 여부를 신호등 아이콘으로 표시하는 FORM 이다. |
| INPUT_CHECK INPUT | MODULE | ZFIR0110_DOC L1170-1175 | 0 | 전표 항목 입력값 점검 로직을 INCLUDE ZFIR0110_102P 로 위임하는 PAI 모듈이다. |
| MODIFY_SCREEN OUTPUT | MODULE | ZFIR0110_DOC L1179-1184 | 0 | 화면 속성 변경 로직을 INCLUDE ZFIR0110_103P 로 위임하는 PBO 모듈이다. |
| SET_ZFBDT INPUT | MODULE | ZFIR0110_DOC L1188-1211 | 1 | 지급조건·증빙일·전기일로 FI_FIND_PAYMENT_CONDITIONS 를 호출해 지급기준일(ZFBDT)과 현금할인 조건을 결정하는 PAI 모듈이다. |
| SET_CURSOR OUTPUT | MODULE | ZFIR0110_DOC L1215-1220 | 0 | 커서 위치 설정 로직을 INCLUDE ZFIR0110_104P 로 위임하는 PBO 모듈이다. |
| SET_GTEXT INPUT | MODULE | ZFIR0110_DOC L1224-1234 | 1 | 사업영역(GSBER) 입력 시 TGSBT 에서 사업영역 텍스트를 조회해 화면에 표시하는 PAI 모듈이다. |
| SET_NAME INPUT | MODULE | ZFIR0110_DOC L1238-1248 | 1 | 사업장(BUPLA) 입력 시 J_1BBRANCH 에서 사업장명을 조회해 화면에 표시하는 PAI 모듈이다. |
| SET_ZTERM INPUT | MODULE | ZFIR0110_DOC L1253-1257 | 0 | 지급조건(ZTERM) 입력 시 ZTERM_PROCESS 를 호출해 지급조건 관련 값을 처리하는 PAI 모듈이다. |
| BSEC_CLEAR | FORM | ZFIR0110_DOC L1264-1273 | 0 | 직원 거래처(XZEMP) 해제 시 1회성 거래처 데이터(BSEC)를 지우고 화면 구조에 반영하는 FORM 이다. |
| SET_DATA | FORM | ZFIR0110_DOC_F01 L7-17 | 1 | 호출 프로그램이 ABAP 메모리(ID 'GT_TABLE')에 넘긴 전표 데이터를 IMPORT 하고 비어 있으면 화면을 종료하는 초기화 루틴이다. |
| SET_F4_HKONT INPUT | MODULE | ZFIR0110_DOC_F01 L23-224 | 4 | 공급업체 라인의 G/L 조정계정(HKONT) F4 도움말로 THKON 에 허용된 대체 조정계정(Alternative Reconciliation Account) 목록을 보여주고 선택 계정과 계정명(SKAT)을 화면에 반영하는 PAI 모듈이다. |
| DYNP_VALUES_READ | FORM | ZFIR0110_DOC_F01 L229-252 | 0 | 화면 0100 의 지정 필드 값을 DYNP_VALUES_READ 로 읽어 F4HLP 테이블에 담는 F4 보조 루틴이다. |
| SET_F4_BVTYP INPUT | MODULE | ZFIR0110_DOC_F01 L258-260 | 0 | 은행 유형(BVTYP) F4 용으로 선언된 빈 PAI 모듈(구현 없음)이다. |
| SET_F4_BSCHL INPUT | MODULE | ZFIR0110_DOC_F01 L266-280 | 0 | 전표 항목의 전기키(BSCHL) 드롭다운 목록을 40(차변)/50(대변)으로 VRM_SET_VALUES 에 설정하는 화면 모듈이다. |
| SET_F4_ZTERM INPUT | MODULE | ZFIR0110_DOC_F01 L286-339 | 2 | 공급업체 전표 입력 화면에서 지급조건(ZTERM) F4 도움말을 띄우고 선택값에 따른 지급기일(ZBD1T)을 화면 필드에 반영하는 PAI 모듈이다. |
| ZTERM_PROCESS | FORM | ZFIR0110_DOC_F01 L343-362 | 1 | 공급업체 라인의 지급조건(ZTERM)으로 T052 에서 지급일수(ZSTG1)를 읽어 ZBD1T 에 설정하는 루틴이다. |
| SET_F4_BUPLA INPUT | MODULE | ZFIR0110_DOC_F01 L368-458 | 2 | 전표 항목의 사업장(BUPLA, Business Place) F4 도움말로 J_1BBRANCH 목록을 보여주고 선택값을 ZDTV3S_DOC_ITEM-BUPLA 에 넣는 PAI 모듈이다. |