Files

5092 lines
202 KiB
Markdown

---
type: abap-program
title: "ZFIR0120 — 법인카드 청구 정산"
description: "법인카드 승인·매입·청구 내역(외부 연계 테이블 ZUNICT1001/1002/1003)을 SAP 전표와 대조해 정산하고 반제 전표를 생성하는 화면이다. 카드사 청구액과 기표된 비용 전표를 매칭해 헤더/아이템 2단 ALV 로 보여주고, 확정 건에 대해 FB05 BDC 로 반제 전표를 만든다. 정산 결과는 ZFIT0150/0151 에 이력으로 남긴다."
resource: "abap://ZFIR0120"
tags: ["법인카드", "정산", "반제", "대사작업", "경비처리", "채무관리", "FI", "반제전표", "전기", "반제선택", "전표생성", "반제결과", "반제전표번호", "상태아이콘", "오류메시지", "처리일시", "변경분갱신", "청구정산", "미결생성", "전기키"]
generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:22+00:00" }
status: stable
x-package:
x-changed-on:
x-tables-read: ["BKPF", "BSEG", "CSKT", "J_1BBRANCH", "LFA1", "LTDX", "SKAT", "T001", "T007S", "TKA02", "USR01", "V_USERNAME", "ZFIT0150", "ZFIT0151", "ZFIT0160", "ZUNICT1000", "ZUNICT1001", "ZUNICT1002", "ZUNICT1003"]
x-tables-write: ["GT_HEAD", "GT_ITEM", "ZFIT0150", "ZFIT0151"]
x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"]
x-code-hash: "a47be08b24931e5b2a0286dd36be92cc959d5169a4f8d768d1d810265421669b"
x-unit-count: 113
x-chunk-count: 67
x-declaration-count: 316
---
## 업무 목적
법인카드 승인·매입·청구 내역(외부 연계 테이블 ZUNICT1001/1002/1003)을 SAP 전표와 대조해 정산하고 반제 전표를 생성하는 화면이다. 카드사 청구액과 기표된 비용 전표를 매칭해 헤더/아이템 2단 ALV 로 보여주고, 확정 건에 대해 FB05 BDC 로 반제 전표를 만든다. 정산 결과는 ZFIT0150/0151 에 이력으로 남긴다.
## 주 흐름
1. ALV 설정을 준비하고 회사코드 권한을 검증한다 (ALV_SETTING → AUTHORITY_BUKRS)
2. 법인카드 승인·매입·청구 내역을 각각 추출한다 (GET_ZUNICT1001 / GET_ZUNICT1002 / GET_ZUNICT1003)
3. 기존 정산 저장내역과 전표 아이템을 읽어 대조 기준을 만든다 (GET_ZFIT0150 → GET_BSEG)
4. 청구액과 전표를 매칭해 헤더/아이템 표시 데이터를 만든다 (DISPLAY_DATA, 461줄)
5. 스플리터 2단 ALV 로 화면 0100 에 출력한다 (SPLITTER_CONTAINER)
6. 확정 건에 대해 반제전표 헤더·아이템을 구성해 FB05 BDC 로 전기한다 (DOCUMENT_POSTING → MAKE_BSELK / MAKE_BKPF / MAKE_BSEG → BDC_FB05)
7. 정산 이력은 별도 화면에서 조회한다 (DISPLAY_DATA_2)
## 핵심 내부테이블
- `GT_HEAD` — 카드 청구 정산 헤더 (채움: DISPLAY_DATA / 소비: SET_FIELD_CATALOGS1)
- `GT_ITEM` — 대조 대상 전표 아이템 (채움: GET_BSEG, DISPLAY_DATA / 소비: SET_FIELD_CATALOGS2, DOCUMENT_POSTING)
## 테이블 / 외부 호출
- read: BKPF, BSEG, CSKT, J_1BBRANCH, LFA1, LTDX, SKAT, T001, T007S, TKA02, USR01, V_USERNAME, ZFIT0150, ZFIT0151, ZFIT0160, ZUNICT1000, ZUNICT1001, ZUNICT1002, ZUNICT1003
- write: GT_HEAD, GT_ITEM, ZFIT0150, ZFIT0151
- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE
## 로직 조각 (67건 / unit 50개)
LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다.
테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.
### EVENT INITIALIZATION — `ZFIR0120` L32-L54 (23줄)
*INITIALIZATION 에서 ALV 설정을 준비하고 정산월(전월)·카드사(롯데카드 210)·전기일(당일) 기본값을 설정한다.*
> 이 unit 의 조각 1개가 9/23줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [other] 선택화면 기본값으로 정산월 P_SPMON 을 지난달, 카드사 P_COMP 를 '210'(롯데카드), 전표 전기일 P_BUDAT 을 당일로 설정한다.
```abap
37| GV_MONTH = SY-DATUM+4(2).
38| GV_MONTH = GV_MONTH - 1.
39| CONCATENATE SY-DATUM(4) GV_MONTH INTO P_SPMON.
40|
41| * 카드사는 Default 롯데카드
42| P_COMP = '210'.
43|
44| * 전표의 전기일 Default 현재일자
45| P_BUDAT = SY-DATUM.
```
- **EN**: Default the selection screen: settlement month to the previous month, card company to '210' (Lotte Card) and posting date to today.
- 업무 키워드: 기본값, 정산월, 카드사, 전기일
- English: Default Value, Settlement Month, Card Company, Posting Date
- 정의부(복사 시 함께 필요): [`GV_MONTH`](#decl-zfir0120top-129-gv_month), [`P_SPMON`](#decl-zfir0120top-162-p_spmon), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`P_BUDAT`](#decl-zfir0120top-189-p_budat)
- 위치: `abap://ZFIR0120/ZFIR0120#L37-L45` · confidence 0.8 · `ZFIR0120#ZFIR0120#EVENT#INITIALIZATION#C1`
### EVENT START-OF-SELECTION — `ZFIR0120` L55-L63 (9줄)
*START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다.*
> 이 unit 의 조각 1개가 3/9줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [validation] 공용 AUTHORITY_BUKRS 로 선택한 회사코드(P_BUKRS)에 대한 사용자 권한(ZFIT0160 기반)을 검증한 뒤 GET_DATA 로 수불부 I/F 이력을 조회한다.
```abap
57| PERFORM AUTHORITY_BUKRS USING P_BUKRS.
58|
59| PERFORM GET_DATA.
```
- **EN**: Check the user's authorization for the selected company code via AUTHORITY_BUKRS and then extract the interface history with GET_DATA.
- 호출(파서): AUTHORITY_BUKRS, GET_DATA
- SAP 객체: ZFIT0160
- 업무 키워드: 회사코드 권한 체크, 권한 검증, 데이터 조회
- English: authorization check, company code
- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs)
- 위치: `abap://ZFIR0120/ZFIR0120#L57-L59` · confidence 0.8 · `ZFIR0120#ZFIR0120#EVENT#START-OF-SELECTION#C1`
### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄)
*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.*
> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다.
```abap
529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
530| ID 'BUKRS' FIELD P_BUKRS.
531| IF SY-SUBRC NE 0.
532| MESSAGE I240(FZ) WITH P_BUKRS.
533| GF_CHECK = C_X.
534| LEAVE LIST-PROCESSING.
535| ENDIF.
```
- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it.
- SAP 객체: F_BKPF_BUK, T001, BUKRS
- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단
- English: authority check, company code authorization, F_BKPF_BUK, access control
- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x)
- 위치: `abap://ZFIR0120/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0120#ZFICOM#FORM#AUTHORITY_BUKRS#C1`
### FORM GET_DATA — `ZFIR0120F01` L9-L49 (41줄)
*정산월(P_SPMON)로 조회기간 범위를 만들고 전표 생성 모드면 이력·승인·매입·청구·전표 아이템을 읽어 대조 데이터를, 이력조회 모드면 저장 이력을 읽어 표시 데이터를 만든다.*
> 이 unit 의 조각 2개가 34/41줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [calculation] 정산월 P_SPMON 의 1일부터 말일(LAST_DAY 매크로)까지를 승인일 조회 범위 R_BUDAT 로 구성한다.
```abap
12| R_BUDAT-SIGN = C_I.
13| R_BUDAT-OPTION = C_BT.
14| CONCATENATE P_SPMON '01' INTO R_BUDAT-LOW.
15| LAST_DAY R_BUDAT-LOW R_BUDAT-HIGH.
16| APPEND R_BUDAT.
```
- **EN**: Build the approval date range R_BUDAT from the first to the last day of the settlement month P_SPMON using the LAST_DAY macro.
- 업무 키워드: 정산월, 조회기간, 월말일, 범위 테이블
- English: Settlement Month, Date Range, Last Day of Month
- 정의부(복사 시 함께 필요): [`R_BUDAT`](#decl-zfir0120top-132-r_budat), [`C_I`](#decl-zficom-216-c_i), [`C_BT`](#decl-zficom-246-c_bt), [`P_SPMON`](#decl-zfir0120top-162-p_spmon), [`LAST_DAY`](#decl-zficom-310-last_day)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L12-L16` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#GET_DATA#C1`
#### [control_flow] 전표 생성(P_RC)이면 기존 이력(ZFIT0150)·승인(ZUNICT1001)·매입(ZUNICT1002)·청구(ZUNICT1003)·전표 아이템(BSEG)을 순서대로 읽어 DISPLAY_DATA 로 대조하고, 이력조회면 ZFIT0150 과 BSEG 만 읽어 DISPLAY_DATA_2 로 표시한다.
```abap
19| IF P_RC EQ C_X.
20| * 기존 저장내역 추출
21| PERFORM GET_ZFIT0150.
22|
23| * 법인카드 승인내역 추출
24| PERFORM GET_ZUNICT1001.
25|
26| * 법인카드 매입내역 추출
27| PERFORM GET_ZUNICT1002.
28|
29| * 법인카드 청구내역 추출
30| PERFORM GET_ZUNICT1003.
31|
32| * 전표 아이템 추출
33| PERFORM GET_BSEG.
34|
35| * Display Data
36| PERFORM DISPLAY_DATA.
37| * 이력조회
38| ELSE.
39| * 기존 저장내역 추출
40| PERFORM GET_ZFIT0150.
41|
42| * 전표 아이템 추출
43| PERFORM GET_BSEG.
44|
45| * Display Data
46| PERFORM DISPLAY_DATA_2.
47| ENDIF.
```
- **EN**: In posting mode read settlement history, card approvals, purchases, billing and document items and build the reconciliation display; in history mode read only the saved history and document items for DISPLAY_DATA_2.
- 호출(파서): GET_ZFIT0150, GET_ZUNICT1001, GET_ZUNICT1002, GET_ZUNICT1003, GET_BSEG, DISPLAY_DATA, GET_ZFIT0150, GET_BSEG, DISPLAY_DATA_2
- SAP 객체: ZFIT0150, ZUNICT1001, ZUNICT1002, ZUNICT1003, BSEG
- 업무 키워드: 전표 생성 모드, 이력조회 모드, 법인카드 정산, 데이터 추출 흐름
- English: Corporate Card Settlement, Data Retrieval, History Mode, Posting Mode
- 정의부(복사 시 함께 필요): [`P_RC`](#decl-zfir0120top-180-p_rc), [`C_X`](#decl-zficom-231-c_x)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L19-L47` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#GET_DATA#C2`
### FORM GET_ZFIT0150 — `ZFIR0120F01` L148-L226 (79줄)
*정산 이력 테이블 ZFIT0150/ZFIT0151 에서 해당 월의 기존 저장내역과 관련 전표 헤더를 읽고, 전표 생성 모드에서 역분개되지 않은 반제전표가 이미 있으면 중복 처리를 막는다.*
> 이 unit 의 조각 2개가 63/79줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 회사코드·카드사·정산월 조건으로 정산 헤더(ZFIT0150)와 상세(ZFIT0151) 이력을 읽고, 헤더의 반제전표(AUGBL)와 상세의 원전표(BELNR)에 대한 BKPF 헤더를 조회한다.
```abap
158| SELECT *
159| INTO TABLE GT_Z0150
160| FROM ZFIT0150
161| WHERE BUKRS EQ P_BUKRS
162| AND COMP EQ P_COMP
163| AND SPMON EQ P_SPMON.
164|
165| * DETAIL
166| SELECT *
167| INTO TABLE GT_Z0151
168| FROM ZFIT0151
169| WHERE BUKRS EQ P_BUKRS
170| AND COMP EQ P_COMP
171| AND SPMON EQ P_SPMON.
172|
173| CHECK GT_Z0150[] IS NOT INITIAL.
174|
175| * 전표 헤더내역
176| SELECT *
177| INTO TABLE GT_BKPF
178| FROM BKPF
179| FOR ALL ENTRIES IN GT_Z0150
180| WHERE BUKRS EQ P_BUKRS
181| AND GJAHR EQ GT_Z0150-AUGDT(4)
182| AND BELNR EQ GT_Z0150-AUGBL.
183|
184| SELECT *
185| INTO TABLE GT_BKPF
186| FROM BKPF
187| FOR ALL ENTRIES IN GT_Z0151
188| WHERE BUKRS EQ P_BUKRS
189| AND GJAHR EQ GT_Z0151-GJAHR
190| AND BELNR EQ GT_Z0151-BELNR.
```
- **EN**: Read settlement header ZFIT0150 and detail ZFIT0151 for company code, card company and month, then fetch BKPF headers for the clearing documents and the original documents.
- 테이블(파서): read [ZFIT0150](/tables/ZFIT0150.md), [ZFIT0151](/tables/ZFIT0151.md), [BKPF](/tables/BKPF.md) / write -
- SAP 객체: ZFIT0150, ZFIT0151, BKPF
- 업무 키워드: 정산 이력, 반제전표, 전표 헤더, 정산월
- English: Settlement History, Clearing Document, BKPF, ZFIT0150
- 정의부(복사 시 함께 필요): [`GT_Z0150`](#decl-zfir0120top-95-gt_z0150), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`P_SPMON`](#decl-zfir0120top-162-p_spmon), [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L158-L190` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZFIT0150#C1`
#### [validation] 이력조회(P_RD)면 카드 마스터(ZUNICT1000)를 추가로 읽고, 전표 생성 모드면 기존 반제전표를 모아 BKPF 에서 역분개(STBLG)되지 않은 건이 하나라도 있으면 '기 처리한 이력이 존재합니다' 메시지로 중단해 중복 정산을 막는다.
```abap
193| IF P_RD EQ C_X.
194| SELECT *
195| APPENDING TABLE GT_Z1000
196| FROM ZUNICT1000
197| FOR ALL ENTRIES IN GT_Z0150
198| WHERE BUKRS EQ P_BUKRS
199| AND CARDNO EQ GT_Z0150-CARDNO.
200| * 생성일때 기존반제전표가 생성되어있으면 메시지
201| ELSE.
202| LOOP AT GT_Z0150.
203| IF GT_Z0150-AUGBL NE SPACE.
204| LT_DOCU-AUGBL = GT_Z0150-AUGBL.
205| LT_DOCU-AUGDT = GT_Z0150-AUGDT.
206| COLLECT LT_DOCU. CLEAR LT_DOCU.
207| ENDIF.
208| ENDLOOP.
209| * 모두 역분개되었을 경우엔 생성가능
210| LOOP AT LT_DOCU.
211| READ TABLE GT_BKPF WITH KEY BELNR = LT_DOCU-AUGBL
212| GJAHR = LT_DOCU-AUGDT(4).
213| IF SY-SUBRC EQ 0.
214| IF GT_BKPF-STBLG EQ SPACE.
215| MESSAGE S000 WITH '기 처리한 이력이 존재합니다!!'
216| DISPLAY LIKE C_E.
217| LEAVE LIST-PROCESSING.
218| ELSE.
219| ENDIF.
220| ENDIF.
221| ENDLOOP.
222| ENDIF.
```
- **EN**: In history mode read card master ZUNICT1000; in posting mode collect existing clearing documents and, if any is not reversed (BKPF-STBLG empty), stop with the message that a processed history already exists to prevent duplicate settlement.
- 테이블(파서): read [ZUNICT1000](/tables/ZUNICT1000.md) / write -
- SAP 객체: ZUNICT1000, BKPF
- 업무 키워드: 중복 정산 방지, 역분개 확인, 반제전표 존재, 이력조회, 카드 마스터
- English: Duplicate Check, Reversal, Clearing Document, ZUNICT1000
- 정의부(복사 시 함께 필요): [`P_RD`](#decl-zfir0120top-182-p_rd), [`C_X`](#decl-zficom-231-c_x), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`GT_Z0150`](#decl-zfir0120top-95-gt_z0150), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`LT_DOCU`](#decl-zfir0120f01-149-lt_docu), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`C_E`](#decl-zficom-212-c_e)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L193-L222` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZFIT0150#C2`
### FORM GET_ZUNICT1001 — `ZFIR0120F01` L55-L83 (29줄)
*법인카드 승인내역과 카드 마스터, 관련 전표 헤더를 조회한다.*
> 이 unit 의 조각 1개가 24/29줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 회사코드·카드사·승인일자 범위로 법인카드 승인내역(ZUNICT1001)을 읽고, 해당 카드번호의 카드 마스터(ZUNICT1000)와 이미 기표된 전표 헤더(BKPF)를 FOR ALL ENTRIES 로 함께 읽어 정산 대조 기준을 만든다.
```abap
58| SELECT *
59| INTO TABLE GT_Z1001
60| FROM ZUNICT1001
61| WHERE BUKRS EQ P_BUKRS
62| AND COMP EQ P_COMP
63| AND AP_DATE IN R_BUDAT.
64|
65| CHECK GT_Z1001[] IS NOT INITIAL.
66| * 법인카드 마스터 내역
67| SELECT *
68| APPENDING TABLE GT_Z1000
69| FROM ZUNICT1000
70| FOR ALL ENTRIES IN GT_Z1001
71| WHERE BUKRS EQ P_BUKRS
72| AND CARDNO EQ GT_Z1001-CARDNO.
73|
74| * 전표 헤더내역
75| SELECT *
76| APPENDING TABLE GT_BKPF
77| FROM BKPF
78| FOR ALL ENTRIES IN GT_Z1001
79| WHERE BUKRS EQ P_BUKRS
80| AND GJAHR EQ GT_Z1001-GJAHR
81| AND BELNR EQ GT_Z1001-BELNR.
```
- **EN**: Reads corporate-card authorizations (ZUNICT1001) plus the card master (ZUNICT1000) and already-posted document headers (BKPF) as the reconciliation basis.
- 테이블(파서): read [ZUNICT1001](/tables/ZUNICT1001.md), [ZUNICT1000](/tables/ZUNICT1000.md), [BKPF](/tables/BKPF.md) / write -
- SAP 객체: ZUNICT1001, ZUNICT1000, BKPF, CARDNO
- 업무 키워드: 법인카드, 카드승인내역, 승인일자, 카드마스터, 전표헤더, 정산대조
- English: corporate card, card authorization, card master, document header, reconciliation
- 정의부(복사 시 함께 필요): [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`GT_Z1001`](#decl-zfir0120top-92-gt_z1001), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`R_BUDAT`](#decl-zfir0120top-132-r_budat), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf)
- 선언을 못 찾은 이름: AP_DATE (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L58-L81` · confidence 0.88 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZUNICT1001#C1`
### FORM GET_ZUNICT1002 — `ZFIR0120F01` L89-L117 (29줄)
*회사코드·카드사·정산월 조건으로 법인카드 매입내역(ZUNICT1002)을 읽고 카드 마스터(ZUNICT1000)와 기표 전표 헤더(BKPF)를 추가 조회한다.*
> 이 unit 의 조각 1개가 24/29줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 회사코드·카드사·승인일 범위로 법인카드 매입내역 ZUNICT1002 를 읽은 뒤 해당 카드의 마스터 ZUNICT1000 과 매입건에 기표된 회계전표 헤더 BKPF(회사코드·연도·전표번호)를 FOR ALL ENTRIES 로 APPENDING 한다.
```abap
92| SELECT *
93| INTO TABLE GT_Z1002
94| FROM ZUNICT1002
95| WHERE BUKRS EQ P_BUKRS
96| AND COMP EQ P_COMP
97| AND AP_DATE IN R_BUDAT.
98|
99| CHECK GT_Z1002[] IS NOT INITIAL.
100| * 법인카드 마스터 내역
101| SELECT *
102| APPENDING TABLE GT_Z1000
103| FROM ZUNICT1000
104| FOR ALL ENTRIES IN GT_Z1002
105| WHERE BUKRS EQ P_BUKRS
106| AND CARDNO EQ GT_Z1002-CARDNO.
107|
108| * 전표 헤더내역
109| SELECT *
110| APPENDING TABLE GT_BKPF
111| FROM BKPF
112| FOR ALL ENTRIES IN GT_Z1002
113| WHERE BUKRS EQ P_BUKRS
114| AND GJAHR EQ GT_Z1002-GJAHR
115| AND BELNR EQ GT_Z1002-BELNR.
```
- **EN**: Select corporate card purchase records from ZUNICT1002 by company code, card company and approval date range, then append the card master ZUNICT1000 and the posted FI document headers BKPF for those records.
- 테이블(파서): read [ZUNICT1002](/tables/ZUNICT1002.md), [ZUNICT1000](/tables/ZUNICT1000.md), [BKPF](/tables/BKPF.md) / write -
- SAP 객체: ZUNICT1002, ZUNICT1000, BKPF
- 업무 키워드: 법인카드 매입내역, 카드 마스터, 전표 헤더, 기표 전표
- English: Corporate Card, Purchase Data, Card Master, BKPF
- 정의부(복사 시 함께 필요): [`ZUNICT1002`](#decl-zfir0120top-9-zunict1002), [`GT_Z1002`](#decl-zfir0120top-93-gt_z1002), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`R_BUDAT`](#decl-zfir0120top-132-r_budat), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf)
- 선언을 못 찾은 이름: AP_DATE (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L92-L115` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZUNICT1002#C1`
### FORM GET_ZUNICT1003 — `ZFIR0120F01` L123-L142 (20줄)
*회사코드·카드사·정산월 조건으로 법인카드 청구내역(ZUNICT1003)을 읽고 해당 카드의 카드 마스터(ZUNICT1000)를 추가 조회한다.*
> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 회사코드·카드사(COMP)·승인일 범위(R_BUDAT)로 법인카드 청구내역 ZUNICT1003 을 GT_Z1003 에 읽고, 청구건의 카드번호로 법인카드 마스터 ZUNICT1000 을 GT_Z1000 에 APPENDING 한다.
```abap
126| SELECT *
127| INTO TABLE GT_Z1003
128| FROM ZUNICT1003
129| WHERE BUKRS EQ P_BUKRS
130| AND COMP EQ P_COMP
131| AND AP_DATE IN R_BUDAT.
132|
133| CHECK GT_Z1003[] IS NOT INITIAL.
134| * 법인카드 마스터 내역
135| SELECT *
136| APPENDING TABLE GT_Z1000
137| FROM ZUNICT1000
138| FOR ALL ENTRIES IN GT_Z1003
139| WHERE BUKRS EQ P_BUKRS
140| AND CARDNO EQ GT_Z1003-CARDNO.
```
- **EN**: Select corporate card billing records from ZUNICT1003 by company code, card company and approval date range, then append the matching card master records from ZUNICT1000 for all entries.
- 테이블(파서): read [ZUNICT1003](/tables/ZUNICT1003.md), [ZUNICT1000](/tables/ZUNICT1000.md) / write -
- SAP 객체: ZUNICT1003, ZUNICT1000
- 업무 키워드: 법인카드 청구내역, 카드 마스터, 카드사, 승인일
- English: Corporate Card, Billing Data, Card Master, FOR ALL ENTRIES
- 정의부(복사 시 함께 필요): [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`GT_Z1003`](#decl-zfir0120top-94-gt_z1003), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`R_BUDAT`](#decl-zfir0120top-132-r_budat), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000)
- 선언을 못 찾은 이름: AP_DATE (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L126-L140` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZUNICT1003#C1`
### FORM GET_BSEG — `ZFIR0120F01` L232-L278 (47줄)
*카드 마스터를 중복 제거한 뒤 카드사 공급업체(LFA1)·회사코드(T001)·관리회계영역(TKA02)·코스트센터 텍스트(CSKT)를 읽고, 전표 헤더 기준으로 전표 아이템(BSEG)을 조회한다.*
> 이 unit 의 조각 2개가 38/47줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 카드 마스터(GT_Z1000)를 회사코드·카드번호로 중복 제거한 뒤 카드사 공급업체 정보(LFA1 사업자번호·이름), 회사코드 T001, 관리회계영역 TKA02 를 읽고 그 KOKRS 로 코스트센터 텍스트(CSKT)를 조회한다.
```abap
237| SORT GT_Z1000 BY BUKRS CARDNO.
238| DELETE ADJACENT DUPLICATES FROM GT_Z1000 COMPARING BUKRS CARDNO.
239|
240| IF GT_Z1000[] IS NOT INITIAL.
241| SELECT LIFNR STCD2 NAME1
242| INTO TABLE GT_LFA1
243| FROM LFA1
244| FOR ALL ENTRIES IN GT_Z1000
245| WHERE LIFNR EQ GT_Z1000-LIFNR.
246|
247| SELECT SINGLE *
248| FROM T001
249| WHERE BUKRS EQ P_BUKRS.
250|
251| SELECT SINGLE *
252| FROM TKA02
253| WHERE BUKRS EQ P_BUKRS.
254|
255| SELECT KOSTL LTEXT
256| INTO TABLE GT_CSKT
257| FROM CSKT
258| FOR ALL ENTRIES IN GT_Z1000
259| WHERE SPRAS EQ SY-LANGU
260| AND KOKRS EQ TKA02-KOKRS
261| AND KOSTL EQ GT_Z1000-KOSTL.
262| ENDIF.
```
- **EN**: Deduplicate the card master by company code and card number, then read vendor name/tax number from LFA1, company code T001, controlling area TKA02 and cost center texts from CSKT for the cards' cost centers.
- 테이블(파서): read [LFA1](/tables/LFA1.md), [T001](/tables/T001.md), [TKA02](/tables/TKA02.md), [CSKT](/tables/CSKT.md) / write -
- SAP 객체: LFA1, T001, TKA02, CSKT
- 업무 키워드: 카드사 공급업체, 코스트센터 텍스트, 관리회계영역, 회사코드, 중복 제거
- English: Vendor Master, LFA1, Cost Center Text, CSKT, Controlling Area
- 정의부(복사 시 함께 필요): [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`GT_LFA1`](#decl-zfir0120top-110-gt_lfa1), [`LFA1`](#decl-zficom-36-lfa1), [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`TKA02`](#decl-zfir0120top-11-tka02), [`GT_CSKT`](#decl-zfir0120top-117-gt_cskt)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L237-L262` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_BSEG#C1`
#### [sql_select] 전표 헤더(GT_BKPF)를 중복 제거하고 그 전표들의 아이템(BSEG)을 회사코드·연도·전표번호로 읽어 반제 대상 채무 라인과 할인 계정 라인 대조에 사용한다.
```abap
265| SORT GT_BKPF BY BUKRS GJAHR BELNR.
266| DELETE ADJACENT DUPLICATES FROM GT_BKPF COMPARING BUKRS GJAHR BELNR.
267|
268| CHECK GT_BKPF[] IS NOT INITIAL.
269|
270| SELECT *
271| INTO TABLE GT_BSEG
272| FROM BSEG
273| FOR ALL ENTRIES IN GT_BKPF
274| WHERE BUKRS EQ P_BUKRS
275| AND GJAHR EQ GT_BKPF-GJAHR
276| AND BELNR EQ GT_BKPF-BELNR.
```
- **EN**: Deduplicate the document headers and select all BSEG line items for those documents to identify vendor lines for clearing and G/L lines for discounts.
- 테이블(파서): read [BSEG](/tables/BSEG.md) / write -
- SAP 객체: BSEG, BKPF
- 업무 키워드: 전표 아이템, 반제 대상 라인, 전표 헤더 중복 제거
- English: BSEG, Line Items, FOR ALL ENTRIES, Clearing
- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L265-L276` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_BSEG#C2`
### FORM DISPLAY_DATA — `ZFIR0120F01` L284-L744 (461줄)
*카드 매입내역(ZUNICT1002)을 기준으로 승인·청구 내역과 기표 전표(BKPF/BSEG)를 대조해 처리금액·대상금액·청구·할인·차액·미청구액을 계산하고 아이템(GT_ITEM)과 카드별 헤더(GT_HEAD)를 만든다(1/2 창).*
> 이 unit 의 조각 8개가 424/461줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [aggregation] 승인번호가 있는 매입내역마다 취소(PU_STAT='0')면 음수 매입금액으로 GT_ITEM 을 만들고, 기표 전표가 있으면 처리금액(AMT_A)·역분개 여부(BKPF STBLG/STJAH)·반제용 채무 라인(BSEG KOART='K' BUZEI)을 확인하며 카드 마스터·카드사명(LFA1)·코스트센터명(CSKT)을 붙인다.
```abap
296| LOOP AT GT_Z1002.
297| * 승인번호가 없는 경우 제외
298| CHECK GT_Z1002-AP_NUM NE SPACE.
299|
300| CLEAR GT_ITEM.
301| GT_ITEM-BUKRS = GT_Z1002-BUKRS.
302| GT_ITEM-COMP = GT_Z1002-COMP.
303| GT_ITEM-CARDNO = GT_Z1002-CARDNO.
304| GT_ITEM-AP_DATE = GT_Z1002-AP_DATE.
305| GT_ITEM-AP_NUM = GT_Z1002-AP_NUM.
306| GT_ITEM-PU_NUM = GT_Z1002-PU_NUM.
307| IF GT_Z1002-PU_STAT EQ C_0. "취소
308| GT_ITEM-PU_AMT = 0 - GT_Z1002-PU_AMT.
309| ELSE.
310| GT_ITEM-PU_AMT = GT_Z1002-PU_AMT.
311| ENDIF.
312| GT_ITEM-BELNR = GT_Z1002-BELNR.
313| GT_ITEM-GJAHR = GT_Z1002-GJAHR.
314| * 처리금액
315| IF GT_ITEM-BELNR NE SPACE.
316| GT_ITEM-AMT_A = GT_ITEM-PU_AMT.
317| * 역분개 되었는지 체크
318| READ TABLE GT_BKPF WITH KEY BUKRS = P_BUKRS
319| GJAHR = GT_Z1002-GJAHR
320| BELNR = GT_Z1002-BELNR.
321| IF SY-SUBRC EQ 0.
322| GT_ITEM-STBLG = GT_BKPF-STBLG.
323| GT_ITEM-STJAH = GT_BKPF-STJAH.
324| ENDIF.
325| * 반제위해 항목추출
326| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS
327| GJAHR = GT_Z1002-GJAHR
328| BELNR = GT_Z1002-BELNR
329| KOART = C_K.
330| IF SY-SUBRC EQ 0.
331| GT_ITEM-BUZEI = GT_BSEG-BUZEI.
332| ENDIF.
333|
334| ENDIF.
335|
336| * 카드정보
337| READ TABLE GT_Z1000 WITH KEY BUKRS = P_BUKRS
338| CARDNO = GT_Z1002-CARDNO.
339| IF SY-SUBRC EQ 0.
340| GT_ITEM-LIFNR = GT_Z1000-LIFNR.
341| GT_ITEM-KOSTL = GT_Z1000-KOSTL.
342| GT_ITEM-CUSER = GT_Z1000-CUSER.
343| * 카드사명
344| IF GT_ITEM-LIFNR NE SPACE.
345| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_ITEM-LIFNR.
346| IF SY-SUBRC EQ 0.
347| GT_ITEM-STCD2 = GT_LFA1-STCD2.
348| GT_ITEM-LIFNR_T = GT_LFA1-NAME1.
349| ENDIF.
350| ENDIF.
351| * 코스트센터명
352| IF GT_ITEM-KOSTL NE SPACE.
353| READ TABLE GT_CSKT WITH KEY KOSTL = GT_ITEM-KOSTL.
354| IF SY-SUBRC EQ 0.
355| GT_ITEM-KOSTL_T = GT_CSKT-LTEXT.
356| ENDIF.
357| ENDIF.
358| ENDIF.
```
- **EN**: For each purchase record with an approval number build an item with sign-adjusted purchase amount; if an FI document exists set processed amount AMT_A, reversal status from BKPF and the vendor line (KOART='K') from BSEG for clearing, and enrich with card master, vendor name and cost center text.
- SAP 객체: ZUNICT1002, ZUNICT1000, BKPF, BSEG, LFA1, CSKT
- 업무 키워드: 법인카드 매입내역, 취소 매입, 처리금액, 역분개 확인, 반제 대상 라인, 카드 마스터
- English: Corporate Card, Purchase Data, Reversal Check, Vendor Line Item, ZUNICT1002
- 정의부(복사 시 함께 필요): [`ZUNICT1002`](#decl-zfir0120top-9-zunict1002), [`GT_Z1002`](#decl-zfir0120top-93-gt_z1002), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`C_0`](#decl-zficom-234-c_0), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`C_K`](#decl-zficom-218-c_k), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000) 외 2건
- 위치: `abap://ZFIR0120/ZFIR0120F01#L296-L358` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C1`
#### [calculation] 매입건에 대응하는 승인내역(GT_Z1001)을 찾아 취소 반영 승인금액을 잡고 매입쪽 전표가 없으면 승인쪽 전표로 처리금액·역분개·채무 라인을 확인한 뒤 매칭된 승인건을 LT_Z1001 에서 제거하고, 청구내역(GT_Z1003)에서 청구금액(REQ_AMT)을 가져오며 매칭된 청구건을 LT_Z1003 에서 제거한다.
```abap
361| READ TABLE GT_Z1001 WITH KEY BUKRS = P_BUKRS
362| COMP = P_COMP
363| CARDNO = GT_Z1002-CARDNO
364| AP_DATE = GT_Z1002-AP_DATE
365| AP_NUM = GT_Z1002-AP_NUM.
366| IF SY-SUBRC EQ 0.
367| IF GT_Z1001-AP_STAT EQ C_0. "취소
368| GT_ITEM-AP_AMT = 0 - GT_Z1001-AP_AMT.
369| ELSE.
370| GT_ITEM-AP_AMT = GT_Z1001-AP_AMT.
371| ENDIF.
372|
373| * 전표번호가 없는 경우 승인쪽 전표
374| IF GT_ITEM-BELNR IS INITIAL.
375| GT_ITEM-BELNR = GT_Z1001-BELNR.
376| GT_ITEM-GJAHR = GT_Z1001-GJAHR.
377| * 처리금액
378| IF GT_ITEM-BELNR NE SPACE.
379| GT_ITEM-AMT_A = GT_ITEM-AP_AMT.
380|
381| * 역분개 되었는지 체크
382| READ TABLE GT_BKPF WITH KEY BUKRS = P_BUKRS
383| GJAHR = GT_Z1001-GJAHR
384| BELNR = GT_Z1001-BELNR.
385| IF SY-SUBRC EQ 0.
386| GT_ITEM-STBLG = GT_BKPF-STBLG.
387| GT_ITEM-STJAH = GT_BKPF-STJAH.
388| ENDIF.
389| * 반제위해 항목추출
390| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS
391| GJAHR = GT_Z1001-GJAHR
392| BELNR = GT_Z1001-BELNR
393| KOART = C_K.
394| IF SY-SUBRC EQ 0.
395| GT_ITEM-BUZEI = GT_BSEG-BUZEI.
396| ENDIF.
397|
398| ENDIF.
399| ENDIF.
400|
401| DELETE LT_Z1001 WHERE BUKRS EQ P_BUKRS
402| AND COMP EQ P_COMP
403| AND CARDNO EQ GT_Z1002-CARDNO
404| AND AP_DATE EQ GT_Z1002-AP_DATE
405| AND AP_NUM EQ GT_Z1002-AP_NUM.
406| ENDIF.
407|
408| * 청구데이터 추출
409| READ TABLE GT_Z1003 WITH KEY BUKRS = P_BUKRS
410| COMP = P_COMP
411| CARDNO = GT_Z1002-CARDNO
412| AP_DATE = GT_Z1002-AP_DATE
413| AP_NUM = GT_Z1002-AP_NUM
414| PU_NUM = GT_Z1002-PU_NUM.
415| IF SY-SUBRC EQ 0.
416| GT_ITEM-REQ_AMT = GT_Z1003-REQ_AMT.
417|
418| DELETE LT_Z1003 WHERE BUKRS EQ P_BUKRS
419| AND COMP EQ P_COMP
420| AND CARDNO EQ GT_Z1002-CARDNO
421| AND AP_DATE EQ GT_Z1002-AP_DATE
422| AND AP_NUM EQ GT_Z1002-AP_NUM
423| AND PU_NUM EQ GT_Z1002-PU_NUM.
424| ENDIF.
```
- **EN**: Match the purchase to its approval record (sign-adjusted amount, fall back to the approval-side document for processed amount, reversal and vendor line) and remove it from LT_Z1001; then match the billing record to take the billed amount and remove it from LT_Z1003.
- SAP 객체: ZUNICT1001, ZUNICT1003, BKPF, BSEG
- 업무 키워드: 승인내역 매칭, 청구내역 매칭, 청구금액, 취소 승인, 매칭 제거
- English: Approval Data, Billing Data, Matching, ZUNICT1001, ZUNICT1003
- 정의부(복사 시 함께 필요): [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`GT_Z1001`](#decl-zfir0120top-92-gt_z1001), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1002`](#decl-zfir0120top-9-zunict1002), [`GT_Z1002`](#decl-zfir0120top-93-gt_z1002), [`C_0`](#decl-zficom-234-c_0), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg) 외 5건
- 선언을 못 찾은 이름: AP_DATE, AP_NUM, PU_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L361-L424` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C2`
#### [calculation] 대상금액(AMT_B=매입금액)과 기존 이력(ZFIT0151)의 기반제액(AMT_E)을 잡고 청구금액·할인(대상-청구)·잔액·차액(처리-청구-할인)·미청구액을 계산하며, 전표가 있고 할인이 있으면 BSEG G/L 라인(KOART='S')의 계정·코스트센터를 할인 전표용으로 저장한 뒤 차이자료 옵션에 따라 GT_ITEM 추가 및 카드별 GT_HEAD COLLECT 한다.
```abap
427| GT_ITEM-AMT_B = GT_ITEM-PU_AMT.
428| * 기반제액
429| READ TABLE GT_Z0151 WITH KEY BUKRS = P_BUKRS
430| COMP = P_COMP
431| CARDNO = GT_Z1002-CARDNO
432| AP_DATE = GT_Z1002-AP_DATE
433| AP_NUM = GT_Z1002-AP_NUM
434| PU_NUM = GT_Z1002-PU_NUM.
435| IF SY-SUBRC EQ 0.
436| IF GT_Z0151-AUGBL NE SPACE.
437| GT_ITEM-AMT_E = GT_ITEM-AMT_A.
438| ENDIF.
439| ENDIF.
440|
441| * 청구금액
442| GT_ITEM-AMT_F = GT_ITEM-REQ_AMT.
443| * 할인금액(대상금액 - 청구금액)
444| IF GT_ITEM-REQ_AMT IS NOT INITIAL.
445| GT_ITEM-AMT_G = GT_ITEM-AMT_B - GT_ITEM-REQ_AMT.
446| ENDIF.
447| * 잔액(청구금액 - 할인금액)
448| GT_ITEM-AMT_H = GT_ITEM-REQ_AMT - GT_ITEM-AMT_G.
449| * 차액(처리금액 - 청구금액 - 할인금액)
450| GT_ITEM-AMT_C = GT_ITEM-AMT_A - GT_ITEM-AMT_F - GT_ITEM-AMT_G.
451| * 미청구액(대상금액 - 청구금액 - 할인금액)
452| GT_ITEM-AMT_D = GT_ITEM-AMT_B - GT_ITEM-AMT_F - GT_ITEM-AMT_G.
453|
454| * 전표번호가 있음서 할인금액 있는 경우
455| IF GT_ITEM-BELNR NE SPACE AND GT_ITEM-AMT_G IS NOT INITIAL.
456| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS
457| GJAHR = GT_ITEM-GJAHR
458| BELNR = GT_ITEM-BELNR
459| KOART = C_S.
460| IF SY-SUBRC EQ 0.
461| GT_ITEM-HKONT = GT_BSEG-HKONT.
462| GT_ITEM-KOSTL2 = GT_BSEG-KOSTL.
463| ENDIF.
464| ENDIF.
465|
466| * 차이자료
467| IF P_RB EQ C_X AND GT_ITEM-AMT_C IS INITIAL.
468| CONTINUE.
469| ENDIF.
470|
471| APPEND GT_ITEM.
472|
473| MOVE-CORRESPONDING GT_ITEM TO GT_HEAD.
474| COLLECT GT_HEAD. CLEAR GT_HEAD.
```
- **EN**: Set target amount and already-cleared amount from ZFIT0151, compute billed, discount, remainder, difference and unbilled amounts, take G/L account and cost center from the BSEG G/L line (KOART='S') when a discount exists, then append to GT_ITEM (skipping zero-difference rows in difference mode) and COLLECT into the per-card header GT_HEAD.
- SAP 객체: ZFIT0151, BSEG
- 업무 키워드: 청구할인, 차액 계산, 미청구액, 기반제액, 할인 계정, 카드별 합계
- English: Discount Amount, Difference, Unbilled Amount, G/L Line Item, COLLECT
- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1002`](#decl-zfir0120top-9-zunict1002), [`GT_Z1002`](#decl-zfir0120top-93-gt_z1002), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`C_S`](#decl-zficom-226-c_s), [`P_RB`](#decl-zfir0120top-171-p_rb), [`C_X`](#decl-zficom-231-c_x), [`GT_HEAD`](#decl-zfir0120top-17-gt_head)
- 선언을 못 찾은 이름: AP_DATE, AP_NUM, PU_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L427-L474` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C3`
#### [aggregation] 청구내역(LT_Z1003) 중 승인번호가 있는 건만 GT_ITEM 기본 필드(카드번호·승인일·승인번호·매입번호·청구금액)에 옮기고 카드 마스터(GT_Z1000)에서 카드사 공급업체·코스트센터·사용자를, LFA1 에서 카드사명·사업자번호를, CSKT 에서 코스트센터명을 붙인다.
```abap
479| LOOP AT LT_Z1003.
480|
481| * 승인번호가 없는 경우 제외
482| CHECK LT_Z1003-AP_NUM NE SPACE.
483|
484| CLEAR GT_ITEM.
485| GT_ITEM-BUKRS = LT_Z1003-BUKRS.
486| GT_ITEM-COMP = LT_Z1003-COMP.
487| GT_ITEM-CARDNO = LT_Z1003-CARDNO.
488| GT_ITEM-AP_DATE = LT_Z1003-AP_DATE.
489| GT_ITEM-AP_NUM = LT_Z1003-AP_NUM.
490| GT_ITEM-PU_NUM = LT_Z1003-PU_NUM.
491| GT_ITEM-REQ_AMT = LT_Z1003-REQ_AMT.
492|
493| * 카드정보
494| READ TABLE GT_Z1000 WITH KEY BUKRS = P_BUKRS
495| CARDNO = LT_Z1003-CARDNO.
496| IF SY-SUBRC EQ 0.
497| GT_ITEM-LIFNR = GT_Z1000-LIFNR.
498| GT_ITEM-KOSTL = GT_Z1000-KOSTL.
499| GT_ITEM-CUSER = GT_Z1000-CUSER.
500| * 카드사명
501| IF GT_ITEM-LIFNR NE SPACE.
502| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_ITEM-LIFNR.
503| IF SY-SUBRC EQ 0.
504| GT_ITEM-STCD2 = GT_LFA1-STCD2.
505| GT_ITEM-LIFNR_T = GT_LFA1-NAME1.
506| ENDIF.
507| ENDIF.
508| * 코스트센터명
509| IF GT_ITEM-KOSTL NE SPACE.
510| READ TABLE GT_CSKT WITH KEY KOSTL = GT_ITEM-KOSTL.
511| IF SY-SUBRC EQ 0.
512| GT_ITEM-KOSTL_T = GT_CSKT-LTEXT.
513| ENDIF.
514| ENDIF.
515| ENDIF.
```
- **EN**: For each billing record with an approval number fill the item key fields and enrich with card master data (vendor, cost center, user), vendor name/tax number from LFA1 and cost center text from CSKT.
- SAP 객체: ZUNICT1003, ZUNICT1000, LFA1, CSKT
- 업무 키워드: 법인카드 청구내역, 카드 마스터, 카드사, 코스트센터, 승인번호
- English: Corporate Card, Billing Data, Vendor, Cost Center, ZUNICT1003
- 정의부(복사 시 함께 필요): [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`LT_Z1003`](#decl-zfir0120f01-287-lt_z1003), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`GT_LFA1`](#decl-zfir0120top-110-gt_lfa1), [`GT_CSKT`](#decl-zfir0120top-117-gt_cskt)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L479-L515` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C4`
#### [calculation] 청구건에 대응하는 승인내역(GT_Z1001)을 찾아 취소(AP_STAT='0')면 음수 승인금액으로 하고, 전표가 기표된 건은 처리금액(AMT_A)과 역분개 여부(BKPF STBLG)·반제용 채무 라인(BSEG KOART='K')을 확인하며, 특정 가맹점 사업자번호(3개)를 제외하고 대상금액(AMT_B)을 설정한 뒤 매칭된 승인건을 LT_Z1001 에서 제거한다.
```abap
518| READ TABLE GT_Z1001 WITH KEY BUKRS = P_BUKRS
519| COMP = P_COMP
520| CARDNO = LT_Z1003-CARDNO
521| AP_DATE = LT_Z1003-AP_DATE
522| AP_NUM = LT_Z1003-AP_NUM.
523| IF SY-SUBRC EQ 0.
524| IF GT_Z1001-AP_STAT EQ C_0. "취소
525| GT_ITEM-AP_AMT = 0 - GT_Z1001-AP_AMT.
526| ELSE.
527| GT_ITEM-AP_AMT = GT_Z1001-AP_AMT.
528| ENDIF.
529|
530| GT_ITEM-BELNR = GT_Z1001-BELNR.
531| GT_ITEM-GJAHR = GT_Z1001-GJAHR.
532| * 처리금액
533| IF GT_ITEM-BELNR NE SPACE.
534| GT_ITEM-AMT_A = GT_ITEM-AP_AMT.
535|
536| * 역분개 되었는지 체크
537| READ TABLE GT_BKPF WITH KEY BUKRS = P_BUKRS
538| GJAHR = GT_Z1001-GJAHR
539| BELNR = GT_Z1001-BELNR.
540| IF SY-SUBRC EQ 0.
541| GT_ITEM-STBLG = GT_BKPF-STBLG.
542| GT_ITEM-STJAH = GT_BKPF-STJAH.
543| ENDIF.
544| * 반제위해 항목추출
545| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS
546| GJAHR = GT_Z1001-GJAHR
547| BELNR = GT_Z1001-BELNR
548| KOART = C_K.
549| IF SY-SUBRC EQ 0.
550| GT_ITEM-BUZEI = GT_BSEG-BUZEI.
551| ENDIF.
552|
553| ENDIF.
554|
555| * 가맹점사업자번호가 '1048116860' '1238191439' '1088158902' 경우
556| * 대상금액 무조건 매입금액
557| IF GT_Z1001-STREGNO EQ '1048116860' OR
558| GT_Z1001-STREGNO EQ '1238191439' OR
559| GT_Z1001-STREGNO EQ '1088158902'.
560| ELSE.
561| GT_ITEM-AMT_B = GT_ITEM-AP_AMT.
562| ENDIF.
563|
564| DELETE LT_Z1001 WHERE BUKRS EQ P_BUKRS
565| AND COMP EQ P_COMP
566| AND CARDNO EQ LT_Z1003-CARDNO
567| AND AP_DATE EQ LT_Z1003-AP_DATE
568| AND AP_NUM EQ LT_Z1003-AP_NUM.
569| ENDIF.
```
- **EN**: Match the billing record to its approval record: negate the amount for cancellations, set processed amount AMT_A when an FI document exists, look up reversal status in BKPF and the vendor line (KOART='K') in BSEG for clearing, set target amount AMT_B except for three excluded merchant registration numbers, and remove the matched approval from LT_Z1001.
- SAP 객체: ZUNICT1001, BKPF, BSEG
- 업무 키워드: 승인내역 매칭, 취소 승인, 처리금액, 역분개 확인, 반제 대상 라인, 가맹점 제외
- English: Approval Data, Reversal Check, Vendor Line Item, Target Amount, ZUNICT1001
- 정의부(복사 시 함께 필요): [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`GT_Z1001`](#decl-zfir0120top-92-gt_z1001), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`LT_Z1003`](#decl-zfir0120f01-287-lt_z1003), [`C_0`](#decl-zficom-234-c_0), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg) 외 2건
- 선언을 못 찾은 이름: AP_DATE, AP_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L518-L569` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C5`
#### [calculation] 기존 정산 이력(ZFIT0151)에 반제전표가 있으면 기반제액(AMT_E)을 잡고, 청구금액(AMT_F)·할인금액(AMT_G=대상-청구)·잔액(AMT_H)·차액(AMT_C=처리-청구-할인)·미청구액(AMT_D)을 계산해 차이자료 옵션(P_RB)이면 차액 0 건을 제외하고 GT_ITEM 에 추가하며 카드별 GT_HEAD 로 COLLECT 합산한다.
```abap
573| READ TABLE GT_Z0151 WITH KEY BUKRS = P_BUKRS
574| COMP = P_COMP
575| CARDNO = LT_Z1003-CARDNO
576| AP_DATE = LT_Z1003-AP_DATE
577| AP_NUM = LT_Z1003-AP_NUM
578| PU_NUM = LT_Z1003-PU_NUM.
579| IF SY-SUBRC EQ 0.
580| IF GT_Z0151-AUGBL NE SPACE.
581| GT_ITEM-AMT_E = GT_ITEM-AMT_A.
582| ENDIF.
583| ENDIF.
584|
585| * 청구금액
586| GT_ITEM-AMT_F = GT_ITEM-REQ_AMT.
587| * 할인금액(대상금액 - 청구금액)
588| IF GT_ITEM-REQ_AMT IS NOT INITIAL.
589| GT_ITEM-AMT_G = GT_ITEM-AMT_B - GT_ITEM-REQ_AMT.
590| ENDIF.
591| * 잔액(청구금액 - 할인금액)
592| GT_ITEM-AMT_H = GT_ITEM-REQ_AMT - GT_ITEM-AMT_G.
593| * 차액(처리금액 - 청구금액 - 할인금액)
594| GT_ITEM-AMT_C = GT_ITEM-AMT_A - GT_ITEM-AMT_F - GT_ITEM-AMT_G.
595| * 미청구액(대상금액 - 청구금액 - 할인금액)
596| GT_ITEM-AMT_D = GT_ITEM-AMT_B - GT_ITEM-AMT_F - GT_ITEM-AMT_G.
597|
598| * 차이자료
599| IF P_RB EQ C_X AND GT_ITEM-AMT_C IS INITIAL.
600| CONTINUE.
601| ENDIF.
602|
603| APPEND GT_ITEM.
604|
605| MOVE-CORRESPONDING GT_ITEM TO GT_HEAD.
606| COLLECT GT_HEAD. CLEAR GT_HEAD.
```
- **EN**: Set already-cleared amount AMT_E from settlement history ZFIT0151, compute billed amount, discount (target minus billed), remainder, difference (processed minus billed minus discount) and unbilled amount, skip zero-difference rows in difference-only mode, append to GT_ITEM and COLLECT into the per-card header GT_HEAD.
- SAP 객체: ZFIT0151
- 업무 키워드: 청구할인, 차액 계산, 미청구액, 기반제액, 카드별 합계, 차이자료
- English: Discount Amount, Difference, Unbilled Amount, COLLECT, ZFIT0151
- 정의부(복사 시 함께 필요): [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`LT_Z1003`](#decl-zfir0120f01-287-lt_z1003), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`P_RB`](#decl-zfir0120top-171-p_rb), [`C_X`](#decl-zficom-231-c_x), [`GT_HEAD`](#decl-zfir0120top-17-gt_head)
- 선언을 못 찾은 이름: AP_DATE, AP_NUM, PU_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L573-L606` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C6`
#### [aggregation] 청구내역과 매칭되지 않고 남은 승인내역(LT_Z1001)을 기준으로 취소 여부를 반영한 승인금액, 기표 전표의 처리금액·역분개 여부·채무 라인, 카드 마스터·카드사명·코스트센터명을 채워 GT_ITEM 을 구성한다.
```abap
612| LOOP AT LT_Z1001.
613| * 승인번호가 없는 경우 제외
614| CHECK LT_Z1001-AP_NUM NE SPACE.
615|
616| CLEAR GT_ITEM.
617| GT_ITEM-BUKRS = LT_Z1001-BUKRS.
618| GT_ITEM-COMP = LT_Z1001-COMP.
619| GT_ITEM-CARDNO = LT_Z1001-CARDNO.
620| GT_ITEM-AP_DATE = LT_Z1001-AP_DATE.
621| GT_ITEM-AP_NUM = LT_Z1001-AP_NUM.
622| GT_ITEM-BELNR = LT_Z1001-BELNR.
623| GT_ITEM-GJAHR = LT_Z1001-GJAHR.
624| IF LT_Z1001-AP_STAT EQ C_0. "취소
625| GT_ITEM-AP_AMT = 0 - LT_Z1001-AP_AMT.
626| ELSE.
627| GT_ITEM-AP_AMT = LT_Z1001-AP_AMT.
628| ENDIF.
629|
630| * 처리금액
631| IF GT_ITEM-BELNR NE SPACE.
632| GT_ITEM-AMT_A = GT_ITEM-AP_AMT.
633| * 역분개 되었는지 체크
634| READ TABLE GT_BKPF WITH KEY BUKRS = P_BUKRS
635| GJAHR = LT_Z1001-GJAHR
636| BELNR = LT_Z1001-BELNR.
637| IF SY-SUBRC EQ 0.
638| GT_ITEM-STBLG = GT_BKPF-STBLG.
639| GT_ITEM-STJAH = GT_BKPF-STJAH.
640| ENDIF.
641| * 반제위해 항목추출
642| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS
643| GJAHR = LT_Z1001-GJAHR
644| BELNR = LT_Z1001-BELNR
645| KOART = C_K.
646| IF SY-SUBRC EQ 0.
647| GT_ITEM-BUZEI = GT_BSEG-BUZEI.
648| ENDIF.
649|
650| ENDIF.
651|
652| * 카드정보
653| READ TABLE GT_Z1000 WITH KEY BUKRS = P_BUKRS
654| CARDNO = LT_Z1001-CARDNO.
655| IF SY-SUBRC EQ 0.
656| GT_ITEM-LIFNR = GT_Z1000-LIFNR.
657| GT_ITEM-KOSTL = GT_Z1000-KOSTL.
658| GT_ITEM-CUSER = GT_Z1000-CUSER.
659| * 카드사명
660| IF GT_ITEM-LIFNR NE SPACE.
661| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_ITEM-LIFNR.
662| IF SY-SUBRC EQ 0.
663| GT_ITEM-STCD2 = GT_LFA1-STCD2.
664| GT_ITEM-LIFNR_T = GT_LFA1-NAME1.
665| ENDIF.
666| ENDIF.
667| * 코스트센터명
668| IF GT_ITEM-KOSTL NE SPACE.
669| READ TABLE GT_CSKT WITH KEY KOSTL = GT_ITEM-KOSTL.
670| IF SY-SUBRC EQ 0.
671| GT_ITEM-KOSTL_T = GT_CSKT-LTEXT.
672| ENDIF.
673| ENDIF.
674| ENDIF.
```
- **EN**: For remaining unmatched approval records build items with sign-adjusted approval amount, processed amount plus reversal status and vendor line for posted documents, and card master / vendor / cost center texts.
- SAP 객체: ZUNICT1001, BKPF, BSEG, LFA1, CSKT
- 업무 키워드: 미청구 승인내역, 취소 승인, 처리금액, 역분개 확인, 카드 마스터
- English: Approval Data, Unbilled, Reversal Check, Card Master, ZUNICT1001
- 정의부(복사 시 함께 필요): [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`LT_Z1001`](#decl-zfir0120f01-285-lt_z1001), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`C_0`](#decl-zficom-234-c_0), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`C_K`](#decl-zficom-218-c_k), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000) 외 2건
- 위치: `abap://ZFIR0120/ZFIR0120F01#L612-L674` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C7`
#### [calculation] 승인 기준 건에 청구금액·대상금액(특정 가맹점 제외)·기반제액을 붙여 할인·잔액·차액·미청구액을 계산하고, 전표가 있고 할인금액이 있으면 BSEG G/L 라인(KOART='S')에서 계정·코스트센터를 가져와 할인 전표 생성용으로 저장한 뒤 GT_ITEM 추가 및 GT_HEAD COLLECT 한다.
```abap
677| READ TABLE GT_Z1003 WITH KEY BUKRS = P_BUKRS
678| COMP = P_COMP
679| CARDNO = LT_Z1001-CARDNO
680| AP_DATE = LT_Z1001-AP_DATE
681| AP_NUM = LT_Z1001-AP_NUM.
682| IF SY-SUBRC EQ 0.
683| GT_ITEM-REQ_AMT = GT_Z1003-REQ_AMT.
684| ENDIF.
685|
686| * 가맹점사업자번호가 '1048116860' '1238191439' '1088158902' 경우
687| * 대상금액 무조건 매입금액
688| IF LT_Z1001-STREGNO EQ '1048116860' OR
689| LT_Z1001-STREGNO EQ '1238191439' OR
690| LT_Z1001-STREGNO EQ '1088158902'.
691| ELSE.
692| GT_ITEM-AMT_B = GT_ITEM-AP_AMT.
693| ENDIF.
694| * 기반제액
695| READ TABLE GT_Z0151 WITH KEY BUKRS = P_BUKRS
696| COMP = P_COMP
697| CARDNO = LT_Z1001-CARDNO
698| AP_DATE = LT_Z1001-AP_DATE
699| AP_NUM = LT_Z1001-AP_NUM.
700| IF SY-SUBRC EQ 0.
701| IF GT_Z0151-AUGBL NE SPACE.
702| GT_ITEM-AMT_E = GT_ITEM-AMT_A.
703| ENDIF.
704| ENDIF.
705|
706| * 청구금액
707| GT_ITEM-AMT_F = GT_ITEM-REQ_AMT.
708| * 할인금액(대상금액 - 청구금액)
709| IF GT_ITEM-REQ_AMT IS NOT INITIAL.
710| GT_ITEM-AMT_G = GT_ITEM-AMT_B - GT_ITEM-REQ_AMT.
711| ENDIF.
712| * 잔액(청구금액 - 할인금액)
713| GT_ITEM-AMT_H = GT_ITEM-REQ_AMT - GT_ITEM-AMT_G.
714| * 차액(처리금액 - 청구금액 - 할인금액)
715| GT_ITEM-AMT_C = GT_ITEM-AMT_A - GT_ITEM-AMT_F - GT_ITEM-AMT_G.
716| * 미청구액(대상금액 - 청구금액 - 할인금액)
717| GT_ITEM-AMT_D = GT_ITEM-AMT_B - GT_ITEM-AMT_F - GT_ITEM-AMT_G.
718|
719| * 전표번호가 있음서 할인금액 있는 경우
720| IF GT_ITEM-BELNR NE SPACE AND GT_ITEM-AMT_G IS NOT INITIAL.
721| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS
722| GJAHR = GT_ITEM-GJAHR
723| BELNR = GT_ITEM-BELNR
724| KOART = C_S.
725| IF SY-SUBRC EQ 0.
726| GT_ITEM-HKONT = GT_BSEG-HKONT.
727| GT_ITEM-KOSTL2 = GT_BSEG-KOSTL.
728| ENDIF.
729| ENDIF.
730|
731| * 차이자료
732| IF P_RB EQ C_X AND GT_ITEM-AMT_C IS INITIAL.
733| CONTINUE.
734| ENDIF.
735|
736| APPEND GT_ITEM.
737|
738| MOVE-CORRESPONDING GT_ITEM TO GT_HEAD.
739| COLLECT GT_HEAD. CLEAR GT_HEAD.
```
- **EN**: Attach billed, target and already-cleared amounts to approval-based items, compute discount, remainder, difference and unbilled amounts, and when a document with a discount exists take the G/L account and cost center from the BSEG G/L line (KOART='S') for the discount posting; append to GT_ITEM and COLLECT into GT_HEAD.
- SAP 객체: ZUNICT1003, ZFIT0151, BSEG
- 업무 키워드: 청구할인, 할인 계정, 차액 계산, G/L 라인, 카드별 합계
- English: Discount Amount, G/L Line Item, Cost Center, COLLECT, ZFIT0151
- 정의부(복사 시 함께 필요): [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`GT_Z1003`](#decl-zfir0120top-94-gt_z1003), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`LT_Z1001`](#decl-zfir0120f01-285-lt_z1001), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`C_S`](#decl-zficom-226-c_s), [`P_RB`](#decl-zfir0120top-171-p_rb) 외 2건
- 선언을 못 찾은 이름: AP_DATE, AP_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L677-L739` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C8`
### FORM DISPLAY_DATA_2 — `ZFIR0120F01` L750-L771 (22줄)
*정산 이력 조회 모드에서 저장된 헤더(ZFIT0150)와 상세(ZFIT0151) 이력을 GT_HEAD/GT_ITEM 으로 옮기고 반제전표 유무에 따라 신호등 아이콘을 설정한다.*
> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [output] ZFIT0150 정산 헤더 이력을 GT_HEAD 로 옮기며 반제전표(AUGBL)가 없으면 빨간불, 있으면 초록불 아이콘을 붙이고 ZFIT0151 상세 이력을 GT_ITEM 으로 옮긴다.
```abap
754| LOOP AT GT_Z0150.
755| MOVE-CORRESPONDING GT_Z0150 TO GT_HEAD.
756| IF GT_Z0150-AUGBL EQ SPACE.
757| GT_HEAD-CICON = ICON_RED_LIGHT.
758| ELSE.
759| GT_HEAD-CICON = ICON_GREEN_LIGHT.
760| ENDIF.
761|
762| APPEND GT_HEAD. CLEAR GT_HEAD.
763| ENDLOOP.
764|
765| * Detail
766| LOOP AT GT_Z0151.
767| MOVE-CORRESPONDING GT_Z0151 TO GT_ITEM.
768| APPEND GT_ITEM. CLEAR GT_ITEM.
769| ENDLOOP.
```
- **EN**: Copy settlement history headers from ZFIT0150 into GT_HEAD with a red/green light icon depending on whether a clearing document exists, and copy detail history ZFIT0151 into GT_ITEM.
- SAP 객체: ZFIT0150, ZFIT0151
- 업무 키워드: 정산 이력, 반제전표 여부, 신호등 아이콘, 법인카드 정산
- English: Settlement History, Clearing Document, Status Icon, ZFIT0150
- 정의부(복사 시 함께 필요): [`GT_Z0150`](#decl-zfir0120top-95-gt_z0150), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`GT_ITEM`](#decl-zfir0120top-51-gt_item)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L754-L769` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA_2#C1`
### EVENT END-OF-SELECTION — `ZFIR0120` L64-L70 (7줄)
*END-OF-SELECTION 에서 조회 결과 GT_HEAD 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다.*
> 이 unit 의 조각 1개가 6/7줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [control_flow] 수불 헤더 데이터가 없으면 '데이터 없음' 메시지(S003)를 내고 리스트 처리를 종료하며, 있으면 2단 ALV 화면 0100 을 호출한다.
```abap
65| IF GT_HEAD[] IS INITIAL.
66| MESSAGE S003.
67| LEAVE LIST-PROCESSING.
68| ELSE.
69| CALL SCREEN 0100.
70| ENDIF.
```
- **EN**: If no header data was found issue message S003 and leave, otherwise call screen 0100 to show the ALV.
- 호출(파서): 0100
- 업무 키워드: 결과 없음, 화면 호출, 조회 결과 확인
- English: no data, call screen
- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0120top-17-gt_head)
- 위치: `abap://ZFIR0120/ZFIR0120#L65-L70` · confidence 0.8 · `ZFIR0120#ZFIR0120#EVENT#END-OF-SELECTION#C1`
### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄)
*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다.
```abap
380| SELECT SINGLE V_USERNAME~NAME_TEXT
381| INTO P_NAMET
382| FROM V_USERNAME
383| WHERE V_USERNAME~BNAME EQ P_UNAME.
384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL.
385| P_NAMET = P_UNAME.
386| ENDIF.
```
- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty.
- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write -
- SAP 객체: V_USERNAME, USR21, ADRP
- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명
- English: User Name, V_USERNAME, User Master
- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#NAME_SELECT#C1`
### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄)
*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다.
```abap
401| SELECT SINGLE CSKT~KTEXT
402| INTO P_KTEXT
403| FROM CSKT
404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU
405| AND CSKT~KOKRS EQ P_KOKRS
406| AND CSKT~KOSTL EQ P_KOSTL
407| AND CSKT~DATBI GE SY-DATLO.
```
- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today).
- 테이블(파서): read [CSKT](/tables/CSKT.md) / write -
- SAP 객체: CSKT
- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간
- English: Cost Center, Controlling Area, CSKT
- 위치: `abap://ZFIR0120/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SELECT_CSKT#C1`
### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄)
*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다.
```abap
423| SELECT SINGLE J_1BBRANCH~NAME
424| INTO P_NAME
425| FROM J_1BBRANCH
426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS
427| AND J_1BBRANCH~BRANCH EQ P_BRANCH.
```
- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch.
- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write -
- SAP 객체: J_1BBRANCH
- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서
- English: Business Place, Branch, Company Code
- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs)
- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0120/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SELECT_J_1BBRANCH#C1`
### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄)
*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다.
```abap
443| GET PARAMETER ID 'ZSP' FIELD L_LANG.
444| IF L_LANG IS INITIAL.
445| L_LANG = SY-LANGU.
446| ENDIF.
447| * Long text
448| IF P_TYPE EQ C_L.
449| SELECT SINGLE SKAT~TXT50
450| INTO P_TXT20
451| FROM SKAT
452| WHERE SKAT~SPRAS EQ L_LANG
453| AND SKAT~KTOPL EQ C_KTOPL
454| AND SKAT~SAKNR EQ P_SAKNR.
455| * Short text
456| ELSE.
457| SELECT SINGLE SKAT~TXT20
458| INTO P_TXT20
459| FROM SKAT
460| WHERE SKAT~SPRAS EQ L_LANG
461| AND SKAT~KTOPL EQ C_KTOPL
462| AND SKAT~SAKNR EQ P_SAKNR.
463| ENDIF.
```
- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts.
- 테이블(파서): read [SKAT](/tables/SKAT.md) / write -
- SAP 객체: SKAT
- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어
- English: G/L Account, Chart of Accounts, Account Text, SKAT
- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl)
- 위치: `abap://ZFIR0120/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SELECT_SKAT#C1`
### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄)
*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.*
> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다.
```abap
482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
483| EXPORTING
484| DEFAULTOPTION = P_BUTTON
485| TEXTLINE1 = P_MESS1
486| TITEL = P_TITLE
487| CANCEL_DISPLAY = P_CANCEL
488| IMPORTING
489| ANSWER = GF_ANSWER.
```
- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER.
- 호출(파서): POPUP_TO_CONFIRM_STEP
- SAP 객체: POPUP_TO_CONFIRM_STEP
- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인
- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP
- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer)
- 위치: `abap://ZFIR0120/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1`
### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄)
*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.*
> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다.
```abap
510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
511| EXPORTING
512| DEFAULTOPTION = P_BUTTON
513| TEXTLINE1 = P_MESS1
514| TEXTLINE2 = P_MESS2
515| TITEL = P_TITLE
516| CANCEL_DISPLAY = P_CANCEL
517| IMPORTING
518| ANSWER = GF_ANSWER.
```
- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER.
- 호출(파서): POPUP_TO_CONFIRM_STEP
- SAP 객체: POPUP_TO_CONFIRM_STEP
- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인
- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP
- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer)
- 위치: `abap://ZFIR0120/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1`
### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄)
*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다.
```abap
547| SELECT SINGLE * FROM ZFIT0160
548| WHERE USERID = P_UNAME.
549|
550| IF SY-SUBRC = 0.
551| IF P_TCODE = 'ZFIR0090'.
552| IF ZFIT0160-ZFIR0090 = ''.
553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'.
554| GF_CHECK = C_X.
555| LEAVE LIST-PROCESSING.
556| ENDIF.
557| ENDIF.
558| ELSE.
559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'.
560| GF_CHECK = C_X.
561| LEAVE LIST-PROCESSING.
562| ENDIF.
```
- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty.
- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write -
- SAP 객체: ZFIT0160, ZFIR0090
- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블
- English: Authorization Check, Custom Authorization Table, User ID
- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x)
- 위치: `abap://ZFIR0120/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#AUTHORITY_PG#C1`
### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄)
*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.*
> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다.
```abap
578| CALL FUNCTION 'DOMAIN_VALUE_GET'
579| EXPORTING
580| I_DOMNAME = P_DOMNAME
581| I_DOMVALUE = P_DOMVALUE
582| IMPORTING
583| E_DDTEXT = P_DDTEXT
584| EXCEPTIONS
585| NOT_EXIST = 1
586| OTHERS = 2.
587|
588| IF SY-SUBRC NE 0.
589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
591| ENDIF.
```
- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found.
- 호출(파서): DOMAIN_VALUE_GET
- SAP 객체: DOMAIN_VALUE_GET
- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명
- English: Domain, Fixed Value, DDTEXT
- 위치: `abap://ZFIR0120/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#GET_DOMAIN_VALUE#C1`
### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄)
*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.*
> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다.
```abap
613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
614| EXPORTING
615| DATE = P_DATE
616| DAYS = P_DAYS
617| MONTHS = P_MONTHS
618| SIGNUM = P_SIGNUM
619| YEARS = P_YEARS
620| IMPORTING
621| CALC_DATE = P_CALC_DATE.
```
- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM.
- 호출(파서): RP_CALC_DATE_IN_INTERVAL
- SAP 객체: RP_CALC_DATE_IN_INTERVAL
- 업무 키워드: 날짜 계산, 기준일, 일자 가감
- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL
- 위치: `abap://ZFIR0120/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1`
### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄)
*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.*
> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다.
```abap
642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES'
643| EXPORTING
644| BEG_DATE = P_BDATE
645| END_DATE = P_EDATE
646| IMPORTING
647| DAYS = P_DAYS
648| MONTHS = P_MONTHS
649| YEARS = P_YEARS.
```
- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES.
- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES
- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES
- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간
- English: Date Difference, Period Calculation
- 위치: `abap://ZFIR0120/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#CALC_BETWEEN_DATES#C1`
### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄)
*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.*
> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다.
```abap
682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[].
683| GT_DYNFIELDS-FIELDNAME = P_FNAME.
684| GT_DYNFIELDS-STEPL = P_STEPL.
685| APPEND GT_DYNFIELDS.
686|
687| LV_PROG = SY-CPROG.
688| LV_DNUM = SY-DYNNR.
689| * To read Field Value on screen
690| CALL FUNCTION 'DYNP_VALUES_READ'
691| EXPORTING
692| DYNAME = LV_PROG
693| DYNUMB = LV_DNUM
694| DETERMINE_LOOP_INDEX = C_X
695| TABLES
696| DYNPFIELDS = GT_DYNFIELDS
697| EXCEPTIONS
698| OTHERS = 01.
699| IF SY-SUBRC EQ 0.
700| READ TABLE GT_DYNFIELDS INDEX 1.
701| P_VALUE = GT_DYNFIELDS-FIELDVALUE.
702| ENDIF.
```
- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ.
- 호출(파서): DYNP_VALUES_READ
- SAP 객체: DYNP_VALUES_READ
- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값
- English: DYNP_VALUES_READ, Dynpro Field, Screen Value
- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x)
- 위치: `abap://ZFIR0120/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#DYNP_VALUES_READ#C1`
### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄)
*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다.
```abap
761| IF GV_KALSM IS INITIAL.
762| GV_KALSM = C_KALSM.
763| ENDIF.
764| SELECT SINGLE T007S~TEXT1
765| INTO P_TEXT1
766| FROM T007S
767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU
768| AND T007S~KALSM EQ GV_KALSM
769| AND T007S~MWSKZ EQ P_MWSKZ.
```
- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E').
- 테이블(파서): read [T007S](/tables/T007S.md) / write -
- SAP 객체: T007S
- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회
- English: Tax Code, Tax Procedure, Sales Tax
- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm)
- 위치: `abap://ZFIR0120/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SELECT_T007S#C1`
### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄)
*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).*
> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다.
```abap
787| CALL FUNCTION 'NUMBER_GET_NEXT'
788| EXPORTING
789| NR_RANGE_NR = P_NRRNG
790| OBJECT = P_OBJCT
791| SUBOBJECT = P_SBJCT
792| IMPORTING
793| NUMBER = P_NUMBR
794| EXCEPTIONS
795| INTERVAL_NOT_FOUND = 1
796| NUMBER_RANGE_NOT_INTERN = 2
797| OBJECT_NOT_FOUND = 3
798| QUANTITY_IS_0 = 4
799| QUANTITY_IS_NOT_1 = 5
800| INTERVAL_OVERFLOW = 6
801| BUFFER_OVERFLOW = 7
802| OTHERS = 8.
803| IF SY-SUBRC <> 0.
804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
806| ENDIF.
```
- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages.
- 호출(파서): NUMBER_GET_NEXT
- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ
- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트
- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ
- 위치: `abap://ZFIR0120/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#GET_NEXT_NUMBER#C1`
### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄)
*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.*
> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다.
```abap
864| LV_LEN = STRLEN( P_FNAME ).
865| LV_POS = LV_LEN - 3.
866| LV_TYPE = P_FNAME+LV_POS(3).
867| TRANSLATE LV_TYPE TO UPPER CASE.
```
- **EN**: Extracts the file extension (last 3 characters) to decide the upload method.
- 업무 키워드: 파일 확장자, 업로드 방식, 파일명
- English: File Extension, File Upload
- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type)
- 위치: `abap://ZFIR0120/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD#C1`
#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다.
```abap
869| IF LV_TYPE EQ 'TXT'.
870| CLEAR : T_LOAD[], T_LOAD.
871| LV_FILENAME = P_FNAME.
872| CALL FUNCTION 'GUI_UPLOAD'
873| EXPORTING
874| FILENAME = LV_FILENAME
875| * FILETYPE = 'ASC'
876| * tab
877| HAS_FIELD_SEPARATOR = C_X
878| * CODEPAGE = '8000'
879| TABLES
880| DATA_TAB = T_LOAD.
881|
882| IF SY-SUBRC NE 0.
883| MESSAGE I106.
884| LEAVE LIST-PROCESSING.
885| ENDIF.
```
- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure.
- 호출(파서): GUI_UPLOAD
- SAP 객체: GUI_UPLOAD
- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일
- English: GUI_UPLOAD, Text File, Local File
- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x)
- 위치: `abap://ZFIR0120/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD#C2`
#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다.
```abap
887| ELSEIF LV_TYPE EQ 'XLS'.
888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
889| EXPORTING
890| * I_FIELD_SEPERATOR =
891| I_LINE_HEADER = P_HLINE
892| I_TAB_RAW_DATA = LV_RAW_DATA
893| I_FILENAME = P_FNAME
894| TABLES
895| I_TAB_CONVERTED_DATA = T_LOAD
896| EXCEPTIONS
897| CONVERSION_FAILED = 1
898| OTHERS = 2.
899|
900| IF SY-SUBRC NE 0.
901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요.
902| LEAVE LIST-PROCESSING.
903| ENDIF.
904| ELSE.
905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요.
906| LEAVE LIST-PROCESSING.
907| ENDIF.
```
- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007.
- 호출(파서): TEXT_CONVERT_XLS_TO_SAP
- SAP 객체: TEXT_CONVERT_XLS_TO_SAP
- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자
- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion
- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data)
- 위치: `abap://ZFIR0120/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD#C3`
### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄)
*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.*
> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다.
```abap
922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
923| EXPORTING
924| FILENAME = P_FNAME
925| I_BEGIN_COL = 1
926| I_BEGIN_ROW = 2
927| I_END_COL = 256
928| I_END_ROW = 65536
929| TABLES
930| INTERN = GT_XLS
931| EXCEPTIONS
932| INCONSISTENT_PARAMETERS = 1
933| UPLOAD_OLE = 2
934| OTHERS = 3.
935|
936| IF SY-SUBRC <> 0.
937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'.
938| LEAVE LIST-PROCESSING.
939| ENDIF.
```
- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error.
- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT
- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC
- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터
- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE
- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls)
- 위치: `abap://ZFIR0120/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD_2#C1`
#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다.
```abap
941| SORT GT_XLS BY ROW COL.
942| LOOP AT GT_XLS.
943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO <FS>.
944| <FS> = GT_XLS-VALUE.
945| AT END OF ROW.
946| APPEND T_LOAD. CLEAR: T_LOAD.
947| ENDAT.
948| ENDLOOP.
```
- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row.
- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼
- English: Row Mapping, Field Symbol, Internal Table
- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [`<FS>`](#decl-zficom-920--fs-)
- 위치: `abap://ZFIR0120/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD_2#C2`
### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄)
*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다.
```abap
967| IF T001-WAERS IS INITIAL.
968| T001-WAERS = C_WAERS.
969| ENDIF.
970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY'
971| EXPORTING
972| * CLIENT = SY-MANDT
973| DATE = P_DATUM
974| FOREIGN_CURRENCY = P_WAERS
975| LOCAL_AMOUNT = P_DMBTR
976| LOCAL_CURRENCY = T001-WAERS
977| RATE = P_KURSF
978| * TYPE_OF_RATE = 'M'
979| * READ_TCURR = 'X'
980| IMPORTING
981| * EXCHANGE_RATE =
982| FOREIGN_AMOUNT = P_WRBTR
983| * FOREIGN_FACTOR =
984| * LOCAL_FACTOR =
985| * EXCHANGE_RATEX =
986| * DERIVED_RATE_TYPE =
987| * FIXED_RATE =
988| EXCEPTIONS
989| NO_RATE_FOUND = 1
990| OVERFLOW = 2
991| NO_FACTORS_FOUND = 3
992| NO_SPREAD_FOUND = 4
993| DERIVED_2_TIMES = 5
994| OTHERS = 6.
995| IF SY-SUBRC NE 0.
996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
998| ENDIF.
```
- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error.
- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY
- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR
- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액
- English: Foreign Currency, Exchange Rate, Currency Conversion
- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers)
- 위치: `abap://ZFIR0120/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1`
### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄)
*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다.
```abap
1016| IF T001-WAERS IS INITIAL.
1017| T001-WAERS = C_WAERS.
1018| ENDIF.
1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
1020| EXPORTING
1021| DATE = P_DATUM
1022| FOREIGN_AMOUNT = P_WRBTR
1023| FOREIGN_CURRENCY = P_WAERS
1024| LOCAL_CURRENCY = T001-WAERS
1025| RATE = P_KURSF
1026| IMPORTING
1027| LOCAL_AMOUNT = P_DMBTR
1028| EXCEPTIONS
1029| NO_RATE_FOUND = 1
1030| OVERFLOW = 2
1031| NO_FACTORS_FOUND = 3
1032| NO_SPREAD_FOUND = 4
1033| DERIVED_2_TIMES = 5
1034| OTHERS = 6.
1035| IF SY-SUBRC NE 0.
1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
1038| ENDIF.
```
- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error.
- 호출(파서): CONVERT_TO_LOCAL_CURRENCY
- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR
- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액
- English: Local Currency, Exchange Rate, Currency Conversion
- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers)
- 위치: `abap://ZFIR0120/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1`
### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄)
*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다.
```abap
1085| SELECT SINGLE *
1086| FROM USR01
1087| WHERE USR01~BNAME EQ P_UNAME.
```
- **EN**: Reads the user master defaults from USR01 for the given user name.
- 테이블(파서): read [USR01](/tables/USR01.md) / write -
- SAP 객체: USR01
- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID
- English: User Master, USR01
- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01)
- 위치: `abap://ZFIR0120/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#SELECT_USR01#C1`
### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄)
*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.*
> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다.
```abap
1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
1109| EXPORTING
1110| FORMNAME = P_FORMNAME
1111| IMPORTING
1112| FM_NAME = GV_FNAME
1113| EXCEPTIONS
1114| NO_FORM = 1
1115| NO_FUNCTION_MODULE = 2
1116| OTHERS = 3.
1117|
1118| IF SY-SUBRC EQ 0.
1119| * Output option appointment (preview screen exception)
1120| GS_DEVICE-PREVIEW = P_PREVIEW.
1121| GS_DEVICE-NO_DIALOG = P_DIALOG.
1122| GS_DEVICE-GETOTF = P_GETOTF.
1123| GS_DEVICE-LANGU = SY-LANGU.
1124| GS_DEVICE-DEVICE = 'PRINTER'.
1125| GS_DEVICE-NO_OPEN = C_X.
1126| GS_DEVICE-NO_CLOSE = C_X.
1127| GS_OPTIONS-TDDEST = P_TDDEST.
1128| GS_OPTIONS-TDIMMED = C_X.
1129| GS_OPTIONS-TDDELETE = C_X.
1130| GS_OPTIONS-TDNEWID = C_X.
1131| * 미리보기버튼
1132| GS_OPTIONS-TDNOPREV = SPACE.
1133| GS_OPTIONS-TDCOVER = SPACE. "C_S.
1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT.
1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME.
1136| ENDIF.
```
- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print).
- 호출(파서): SSF_FUNCTION_MODULE_NAME
- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP
- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터
- English: Smart Forms, Output Options, Control Parameters, Print Preview
- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options)
- 위치: `abap://ZFIR0120/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SMARTFORM_CONTROL#C1`
### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄)
*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다.
```abap
1145| CALL FUNCTION 'SSF_OPEN'
1146| EXPORTING
1147| CONTROL_PARAMETERS = GS_DEVICE
1148| OUTPUT_OPTIONS = GS_OPTIONS
1149| USER_SETTINGS = SPACE
1150| EXCEPTIONS
1151| FORMATTING_ERROR = 1
1152| INTERNAL_ERROR = 2
1153| SEND_ERROR = 3
1154| USER_CANCELED = 4
1155| OTHERS = 5.
```
- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS.
- 호출(파서): SSF_OPEN
- SAP 객체: SSF_OPEN
- 업무 키워드: 스마트폼, 출력 시작, 양식 출력
- English: Smart Forms, SSF_OPEN, Output Options
- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options)
- 위치: `abap://ZFIR0120/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#SMARTFORM_OPEN#C1`
### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄)
*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.*
> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다.
```abap
1163| CALL FUNCTION 'SSF_CLOSE'
1164| IMPORTING
1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO
1166| EXCEPTIONS
1167| FORMATTING_ERROR = 1
1168| INTERNAL_ERROR = 2
1169| SEND_ERROR = 3
1170| OTHERS = 4.
1171| IF SY-SUBRC NE 0.
1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
1174| ENDIF.
```
- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error.
- 호출(파서): SSF_CLOSE
- SAP 객체: SSF_CLOSE
- 업무 키워드: 스마트폼, 출력 종료, 양식 출력
- English: Smart Forms, SSF_CLOSE, Print Job
- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info)
- 위치: `abap://ZFIR0120/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#SMARTFORM_CLOSE#C1`
### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄)
*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.*
> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다.
```abap
1242| IF P_DYN EQ C_X.
1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool
1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number
1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start
1246| ELSE.
1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name
1248| P_VALUE TO GT_BDC-FVAL. "BDC field value
1249| ENDIF.
1250| APPEND GT_BDC.
```
- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA).
- SAP 객체: BDCDATA
- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋
- English: BDCDATA, Batch Input, Dynpro
- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc)
- 위치: `abap://ZFIR0120/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DYNPRO#C1`
### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄)
*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.*
> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다.
```abap
1260| CTU_PARAMS-DISMODE = GV_MODE.
1261| CTU_PARAMS-UPDMODE = C_A.
1262| * CTU_PARAMS-NOBINPT = C_X.
1263| * CTU_PARAMS-RACOMMIT = C_X.
1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS
1265| MESSAGES INTO GT_MESS.
```
- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS.
- 호출(파서): P_TCODE
- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS
- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드
- English: Call Transaction, BDC, CTU_PARAMS
- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess)
- 위치: `abap://ZFIR0120/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#BDC_TRANSACTION#C1`
### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄)
*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.*
> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다.
```abap
1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD'
1276| EXPORTING
1277| MSGID = GT_MESS-MSGID
1278| MSGNR = GT_MESS-MSGNR
1279| MSGV1 = GT_MESS-MSGV1
1280| MSGV2 = GT_MESS-MSGV2
1281| MSGV3 = GT_MESS-MSGV3
1282| MSGV4 = GT_MESS-MSGV4
1283| IMPORTING
1284| MESSAGE_TEXT_OUTPUT = P_NATXT.
```
- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD.
- 호출(파서): MESSAGE_TEXT_BUILD
- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL
- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그
- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log
- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess)
- 위치: `abap://ZFIR0120/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#MESSAGE_SELECT#C1`
### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄)
*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.*
> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다.
```abap
1299| PERFORM DYNPRO USING :
1300| 'X' 'SAPMF02K' '0106',
1301| ' ' 'BDC_OKCODE' '/00',
1302| ' ' 'RF02K-LIFNR' P_LIFNR,
1303| ' ' 'RF02K-BUKRS' P_BUKRS,
1304| ' ' 'RF02K-D0110' C_X,
1305| ' ' 'RF02K-D0120' C_X,
1306| ' ' 'RF02K-D0130' C_X,
1307| ' ' 'RF02K-D0210' C_X,
1308| ' ' 'RF02K-D0215' C_X,
1309| ' ' 'RF02K-D0215' C_X,
1310| ' ' 'RF02K-D0610' C_X.
1311|
1312| CTU_PARAMS-DISMODE = C_E.
1313| CTU_PARAMS-UPDMODE = C_A.
1314| CTU_PARAMS-NOBINPT = C_X.
1315| CTU_PARAMS-RACOMMIT = C_X.
1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS.
```
- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master.
- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03
- SAP 객체: FK03, SAPMF02K, LFA1
- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드
- English: Vendor Master, BDC, Call Transaction
- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc)
- 위치: `abap://ZFIR0120/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#BDC_FK03#C1`
### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄)
*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.*
> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다.
```abap
1331| CHECK P_BELNR IS NOT INITIAL.
1332| SET PARAMETER ID 'BLN' FIELD P_BELNR.
1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS.
1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR.
1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
```
- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document.
- 호출(파서): FB03
- SAP 객체: FB03, BKPF
- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도
- English: Accounting Document, Display Document, FB03
- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs)
- 위치: `abap://ZFIR0120/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0120#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1`
### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄)
*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.*
> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다.
```abap
1350| IF P_TXT EQ SPACE.
1351| GV_INDEX = GV_INDEX + 1.
1352| GV_KBETR = GV_INDEX / GV_TABIN * 100.
1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...'
1354| INTO LV_TEXT SEPARATED BY SPACE.
1355| CONDENSE GV_KBETR.
1356| LV_PCEN = GV_KBETR.
1357| ELSE.
1358| LV_TEXT = P_TXT.
1359| LV_PCEN = P_PCT.
1360| ENDIF.
1361|
1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
1363| EXPORTING
1364| PERCENTAGE = LV_PCEN
1365| TEXT = LV_TEXT.
```
- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR.
- 호출(파서): SAPGUI_PROGRESS_INDICATOR
- SAP 객체: SAPGUI_PROGRESS_INDICATOR
- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시
- English: Progress Indicator, Status Bar
- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen)
- 위치: `abap://ZFIR0120/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#STATUS_BAR#C1`
### FORM HOTSPOT_CLICK — `ZFIR0120F01` L1179-L1210 (32줄)
*헤더 ALV 핫스팟 클릭 시 카드번호(CARDNO)면 해당 카드의 상세 아이템을 GT_ITEM2 로 추려 상세 그리드를 갱신하고, 반제전표(AUGBL)면 FB03 으로 전표를 조회한다.*
> 이 unit 의 조각 2개가 19/32줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [control_flow] 카드번호 컬럼 클릭 시 헤더 행의 회사코드·카드번호와 일치하는 GT_ITEM 을 GT_ITEM2 로 복사하고 OK 코드 ZUSER 를 발생시켜 PAI 에서 상세 그리드를 갱신한다.
```abap
1187| WHEN 'CARDNO'.
1188| CLEAR : GT_ITEM2[], GT_ITEM2.
1189|
1190| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS
1191| AND CARDNO EQ GT_HEAD-CARDNO.
1192| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2.
1193| APPEND GT_ITEM2. CLEAR GT_ITEM2.
1194| ENDLOOP.
1195|
1196| * PAI로 호출
1197| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE
1198| EXPORTING
1199| NEW_CODE = 'ZUSER'.
```
- **EN**: On CARDNO hotspot copy matching items into GT_ITEM2 and raise OK code ZUSER via CL_GUI_CFW=>SET_NEW_OK_CODE to refresh the detail grid in PAI.
- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE
- SAP 객체: CL_GUI_CFW
- 업무 키워드: 카드번호, 헤더-아이템 연동, 상세 그리드 갱신, 핫스팟
- English: Card Number, Hotspot, Drilldown, CL_GUI_CFW
- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_ITEM2`](#decl-zfir0120top-89-gt_item2), [`GT_HEAD`](#decl-zfir0120top-17-gt_head)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1187-L1199` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#HOTSPOT_CLICK#C1`
#### [interface] 반제전표 컬럼 클릭 시 반제전표번호·회사코드·반제연도(AUGDT 앞 4자리)로 파라미터 ID 를 설정하고 FB03 으로 반제전표를 조회한다.
```abap
1202| WHEN 'AUGBL'.
1203| CHECK GT_HEAD-AUGBL IS NOT INITIAL.
1204| SET PARAMETER ID 'BLN' FIELD GT_HEAD-AUGBL.
1205| SET PARAMETER ID 'BUK' FIELD P_BUKRS.
1206| SET PARAMETER ID 'GJR' FIELD GT_HEAD-AUGDT(4).
1207| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
```
- **EN**: On AUGBL hotspot set parameter IDs from clearing document, company code and clearing year and call FB03 to display the clearing document.
- 호출(파서): FB03
- SAP 객체: FB03
- 업무 키워드: 반제전표 조회, 핫스팟, 회계전표
- English: Clearing Document, FB03, Hotspot
- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1202-L1207` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#HOTSPOT_CLICK#C2`
### FORM HOTSPOT_CLICK2 — `ZFIR0120F01` L1219-L1235 (17줄)
*상세 ALV 에서 전표번호(BELNR) 핫스팟 클릭 시 파라미터 ID 를 설정하고 FB03 으로 회계전표를 조회한다.*
> 이 unit 의 조각 1개가 12/17줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [interface] 클릭한 상세 행의 전표번호가 있으면 BLN/BUK/GJR 파라미터 ID 를 설정하고 FB03 트랜잭션을 호출해 전표를 조회한다.
```abap
1222| READ TABLE GT_ITEM2 INDEX P_ROW_ID-INDEX.
1223| CHECK SY-SUBRC EQ 0.
1224|
1225| CASE P_COLUMN_ID.
1226| * 전표번호
1227| WHEN 'BELNR'.
1228| CHECK GT_ITEM2-BELNR IS NOT INITIAL.
1229| SET PARAMETER ID 'BLN' FIELD GT_ITEM2-BELNR.
1230| SET PARAMETER ID 'BUK' FIELD P_BUKRS.
1231| SET PARAMETER ID 'GJR' FIELD GT_ITEM2-GJAHR.
1232| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
1233| ENDCASE.
```
- **EN**: For the clicked detail row with a document number set parameter IDs BLN/BUK/GJR and call transaction FB03 to display the accounting document.
- 호출(파서): FB03
- SAP 객체: FB03
- 업무 키워드: 전표 조회, 핫스팟, 회계전표, 파라미터 ID
- English: Hotspot, FB03, Display Document, SET PARAMETER
- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_ITEM2`](#decl-zfir0120top-89-gt_item2), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1222-L1233` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#HOTSPOT_CLICK2#C1`
### FORM DOUBLE_CLICK — `ZFIR0120F01` L1244-L1263 (20줄)
*헤더 ALV 더블클릭 시 해당 회사코드·카드번호의 상세 아이템(GT_ITEM)을 GT_ITEM2 로 추려 상세 그리드 갱신용 OK 코드 ZUSER 를 발생시킨다.*
> 이 unit 의 조각 1개가 13/20줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [control_flow] 더블클릭한 헤더 행의 회사코드·카드번호와 일치하는 아이템을 GT_ITEM 에서 GT_ITEM2 로 복사하고 CL_GUI_CFW=>SET_NEW_OK_CODE 로 OK 코드 ZUSER 를 발생시켜 PAI 에서 상세 그리드를 갱신하게 한다.
```abap
1249| READ TABLE GT_HEAD INDEX P_ROW-INDEX.
1250| CHECK SY-SUBRC EQ 0.
1251|
1252| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS
1253| AND CARDNO EQ GT_HEAD-CARDNO.
1254| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2.
1255| APPEND GT_ITEM2. CLEAR GT_ITEM2.
1256| ENDLOOP.
1257|
1258| * PAI로 호출
1259| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE
1260| EXPORTING
1261| NEW_CODE = 'ZUSER'.
```
- **EN**: Copy the items matching the double-clicked header row's company code and card number into GT_ITEM2 and trigger OK code ZUSER via CL_GUI_CFW=>SET_NEW_OK_CODE so PAI refreshes the detail grid.
- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE
- SAP 객체: CL_GUI_CFW
- 업무 키워드: 더블클릭, 헤더-아이템 연동, 카드번호, 상세 그리드 갱신
- English: Double Click, Header-Item Drilldown, Card Number, CL_GUI_CFW
- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_ITEM2`](#decl-zfir0120top-89-gt_item2)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1249-L1261` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DOUBLE_CLICK#C1`
### FORM ALV_GRID_DISPLAY1 — `ZFIR0120F01` L898-L913 (16줄)
*헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 임시전표 헤더 목록(GT_HEAD)을 상단 ALV에 표시하는 FORM이다.*
> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [output] 레이아웃·변형·툴바 제외 목록과 함께 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY를 호출해 임시전표 헤더 내부테이블 GT_HEAD를 상단 ALV 그리드에 출력한다.
```abap
901| GV_VARI1-REPORT = SY-REPID.
902| CALL METHOD GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
903| EXPORTING
904| I_STRUCTURE_NAME = 'GT_HEAD'
905| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
906| IS_LAYOUT = GV_LAYO1
907| IS_VARIANT = GV_VARI1
908| I_BUFFER_ACTIVE = C_X
909| I_SAVE = C_A
910| CHANGING
911| IT_OUTTAB = GT_HEAD[]
912| IT_FIELDCATALOG = GT_FCAT_HEAD[].
```
- **EN**: Displays the parked document header list (GT_HEAD) in the upper ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions.
- 호출(파서): GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
- SAP 객체: CL_GUI_ALV_GRID
- 업무 키워드: 헤더 ALV 출력, 임시전표 목록, 그리드 표시
- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Parked Document
- 정의부(복사 시 함께 필요): [`GV_VARI1`](#decl-zfir0120top-148-gv_vari1), [`GV_ALV_GRID1`](#decl-zfir0120top-142-gv_alv_grid1), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO1`](#decl-zfir0120top-145-gv_layo1), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L901-L912` · confidence 0.8 · `ZFIR0120#ZFIR0120F01#FORM#ALV_GRID_DISPLAY1#C1`
### FORM ALV_GRID_DISPLAY2 — `ZFIR0120F01` L1041-L1056 (16줄)
*아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 선택 전표의 아이템 목록(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다.*
> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [output] 레이아웃·변형·툴바 제외 목록과 함께 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전표 아이템 내부테이블 GT_ITEM2를 하단 ALV 그리드에 출력한다.
```abap
1044| GV_VARI2-REPORT = SY-REPID.
1045| CALL METHOD GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
1046| EXPORTING
1047| I_STRUCTURE_NAME = 'GT_ITEM'
1048| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
1049| IS_LAYOUT = GV_LAYO2
1050| IS_VARIANT = GV_VARI2
1051| I_BUFFER_ACTIVE = C_X
1052| I_SAVE = C_A
1053| CHANGING
1054| IT_OUTTAB = GT_ITEM2[]
1055| IT_FIELDCATALOG = GT_FCAT_ITEM[].
```
- **EN**: Displays the document line items (GT_ITEM2) in the lower ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions.
- 호출(파서): GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
- SAP 객체: CL_GUI_ALV_GRID
- 업무 키워드: 아이템 ALV 출력, 전표 아이템, 그리드 표시
- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Line Item
- 정의부(복사 시 함께 필요): [`GV_VARI2`](#decl-zfir0120top-149-gv_vari2), [`GV_ALV_GRID2`](#decl-zfir0120top-143-gv_alv_grid2), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO2`](#decl-zfir0120top-146-gv_layo2), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_ITEM2`](#decl-zfir0120top-89-gt_item2), [`GT_FCAT_ITEM`](#decl-zfialv-82-gt_fcat_item)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1044-L1055` · confidence 0.8 · `ZFIR0120#ZFIR0120F01#FORM#ALV_GRID_DISPLAY2#C1`
### FORM DOCUMENT_POSTING — `ZFIR0120F01` L1269-L1375 (107줄)
*카드별 청구 정산 내역으로 반제/미결 전표 데이터를 만들고 카드 300건 단위로 전표를 생성한 뒤 정산 이력을 저장한다.*
> 이 unit 의 조각 3개가 87/107줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [aggregation] 카드별로 아이템을 돌며, 이미 전표번호가 있고 역분개되지 않은 항목은 BSEG 기준 반제 선택항목(BSELP)으로 넣고, 전표가 없는 항목은 금액 부호에 따라 전기키 34/24 로 미결 항목을 생성하며 승인번호·구매번호·가맹점명을 참조필드에 남긴다. 할인금액은 계정·코스트센터별로 COLLECT 해 합산한다.
```abap
1283| LOOP AT GT_HEAD.
1284| GT_HEAD-CHFLG = C_X.
1285| MODIFY GT_HEAD.
1286|
1287| AT LAST.
1288| LV_LAST = C_X.
1289| ENDAT.
1290|
1291| LV_CNT = LV_CNT + 1.
1292| MOVE-CORRESPONDING GT_HEAD TO GT_Z0150_S.
1293| APPEND GT_Z0150_S. CLEAR GT_Z0150_S.
1294|
1295| * ITEM 내역 생성
1296| LOOP AT GT_ITEM WHERE CARDNO EQ GT_HEAD-CARDNO.
1297| GT_ITEM-CHFLG = C_X.
1298| MODIFY GT_ITEM.
1299|
1300| MOVE-CORRESPONDING GT_ITEM TO GT_Z0151_S.
1301| APPEND GT_Z0151_S. CLEAR GT_Z0151_S.
1302|
1303| * 청구금액이 있는 데이터만..
1304| CHECK GT_ITEM-REQ_AMT IS NOT INITIAL.
1305|
1306| * 전표번호가 있는 경우 해당 항목 반제 처리
1307| IF GT_ITEM-BELNR NE SPACE AND GT_ITEM-STBLG EQ SPACE.
1308|
1309| GT_BSELP-STYPE = C_D.
1310| GT_BSELP-TBNAM = 'BSEG'.
1311| GT_BSELP-FELDN_1 = 'BELNR'.
1312| CONCATENATE GT_ITEM-BELNR GT_ITEM-GJAHR GT_ITEM-BUZEI
1313| INTO GT_BSELP-SLVON_1.
1314| APPEND GT_BSELP. CLEAR GT_BSELP.
1315| ELSE.
1316| * 대상금액으로 미결항목 생성
1317| IF GT_ITEM-AMT_B GT 0.
1318| GT_BBSEG-NEWBS = '34'. "전기키
1319| ELSE.
1320| GT_BBSEG-NEWBS = '24'. "전기키
1321| GT_ITEM-AMT_B = 0 - GT_ITEM-AMT_B.
1322| ENDIF.
1323|
1324| GT_BBSEG-NEWKO = GT_ITEM-LIFNR. "구매처코드
1325| CHANGE_CURRENCY GT_ITEM-AMT_B GT_BBSEG-WRBTR C_WAERS.
1326| CONCATENATE P_SPMON(4) '년' P_SPMON+4(2) ' 법인카드 청구정산 미결생성'
1327| INTO GT_BBSEG-SGTXT.
1328| GT_BBSEG-XREF1 = GT_ITEM-AP_NUM.
1329| GT_BBSEG-XREF2 = GT_ITEM-PU_NUM+22(12).
1330| GT_BBSEG-XREF3 = GT_ITEM-STREGNM.
1331| APPEND GT_BBSEG. CLEAR GT_BBSEG.
1332| ENDIF.
1333| * 할인금액이 있는 경우
1334| IF GT_ITEM-AMT_G IS NOT INITIAL.
1335| GT_AMT_G-HKONT = GT_ITEM-HKONT.
1336| GT_AMT_G-KOSTL = GT_ITEM-KOSTL.
1337| GT_AMT_G-DMBTR = GT_ITEM-AMT_G.
1338| COLLECT GT_AMT_G. CLEAR GT_AMT_G.
1339| ENDIF.
1340| ENDLOOP.
```
- **EN**: Per card item: adds already-posted items as clearing selections (BSELP) or creates open items with posting key 34/24 by sign, stamping reference fields, and collects discount amounts by account/cost center.
- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [GT_ITEM](/tables/GT_ITEM.md)
- SAP 객체: BSELP, BBSEG, BSEG, NEWBS, XREF1, XREF2, XREF3, LIFNR
- 업무 키워드: 법인카드, 청구정산, 반제선택, 미결생성, 전기키, 할인금액, 참조필드, 가맹점
- English: corporate card, billing settlement, clearing selection, open item, posting key, discount amount, reference field
- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`C_X`](#decl-zficom-231-c_x), [`LV_LAST`](#decl-zfir0120f01-1271-lv_last), [`LV_CNT`](#decl-zfir0120f01-1270-lv_cnt), [`GT_Z0150_S`](#decl-zfir0120top-97-gt_z0150_s), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_Z0151_S`](#decl-zfir0120top-98-gt_z0151_s), [`GT_BSELP`](#decl-zficom-113-gt_bselp), [`C_D`](#decl-zficom-211-c_d), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`CHANGE_CURRENCY`](#decl-zficom-333-change_currency), [`C_WAERS`](#decl-zficom-199-c_waers) 외 2건
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1283-L1340` · confidence 0.84 · `ZFIR0120#ZFIR0120F01#FORM#DOCUMENT_POSTING#C1`
#### [control_flow] 카드 300건마다(또는 마지막 건에서) 반제전표 헤더·전표헤더·할인금액 아이템을 만들고, 청구금액 합계 부호에 따라 전기키 31/21 로 공급업체 AP 라인을 추가한 뒤 전표 생성 함수를 호출한다.
```abap
1343| IF LV_CNT EQ '300' OR LV_LAST EQ C_X.
1344| * 반제전표 헤더
1345| PERFORM MAKE_BSELK.
1346| * 전표헤더
1347| PERFORM MAKE_BKPF.
1348| * 할인금액 아이템
1349| PERFORM MAKE_BSEG.
1350| * 청구금액합계로 AP라인
1351| IF GT_HEAD-AMT_F GT 0.
1352| GT_BBSEG-NEWBS = '31'.
1353| ELSE.
1354| GT_BBSEG-NEWBS = '21'.
1355| GT_HEAD-AMT_F = 0 - GT_HEAD-AMT_F.
1356| ENDIF.
1357| GT_BBSEG-NEWKO = GT_HEAD-LIFNR.
1358| CHANGE_CURRENCY GT_HEAD-AMT_F GT_BBSEG-WRBTR C_WAERS.
1359| CONCATENATE P_SPMON(4) '년' P_SPMON+4(2) ' 법인카드 청구정산'
1360| INTO GT_BBSEG-SGTXT.
1361| APPEND GT_BBSEG. CLEAR GT_BBSEG.
1362|
1363| * 전표생성펑션 CALL
1364| PERFORM BDC_FB05.
1365|
1366| CLEAR: LV_CNT, GT_BBSEG[], GT_BBSEG, GT_BSELP[], GT_BSELP.
1367| ENDIF.
```
- **EN**: Every 300 cards (or at the last record) builds the clearing header, document header and discount lines, appends the vendor AP line with posting key 31/21 by sign, and posts.
- 호출(파서): MAKE_BSELK, MAKE_BKPF, MAKE_BSEG, BDC_FB05
- SAP 객체: BSELK, BBKPF, BBSEG, NEWBS, LIFNR
- 업무 키워드: 분할전기, 300건단위, 청구금액, 공급업체, AP라인, 전기키, 반제전표
- English: batch posting, chunked posting, billing amount, vendor, AP line, posting key, clearing document
- 정의부(복사 시 함께 필요): [`LV_CNT`](#decl-zfir0120f01-1270-lv_cnt), [`LV_LAST`](#decl-zfir0120f01-1271-lv_last), [`C_X`](#decl-zficom-231-c_x), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`CHANGE_CURRENCY`](#decl-zficom-333-change_currency), [`C_WAERS`](#decl-zficom-199-c_waers), [`P_SPMON`](#decl-zfir0120top-162-p_spmon), [`GT_BSELP`](#decl-zficom-113-gt_bselp)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1343-L1367` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DOCUMENT_POSTING#C2`
#### [db_write] 정산 헤더·아이템 이력을 CBO 테이블 ZFIT0150/ZFIT0151 에 저장한다.
```abap
1370| IF GT_Z0150_S[] IS NOT INITIAL.
1371| MODIFY ZFIT0150 FROM TABLE GT_Z0150_S.
1372| MODIFY ZFIT0151 FROM TABLE GT_Z0151_S.
1373| ENDIF.
```
- **EN**: Persists settlement header and item history to ZFIT0150/ZFIT0151.
- 테이블(파서): read - / write [ZFIT0150](/tables/ZFIT0150.md), [ZFIT0151](/tables/ZFIT0151.md)
- SAP 객체: ZFIT0150, ZFIT0151
- 업무 키워드: 정산이력, 이력저장, 카드정산
- English: settlement history, persist, card settlement
- 정의부(복사 시 함께 필요): [`GT_Z0150_S`](#decl-zfir0120top-97-gt_z0150_s), [`GT_Z0151_S`](#decl-zfir0120top-98-gt_z0151_s)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1370-L1373` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#DOCUMENT_POSTING#C3`
### FORM MAKE_BSELK — `ZFIR0120F01` L1381-L1391 (11줄)
*FB05 반제 전기를 위한 반제 계정 선택 헤더(BSELK)에 공급업체(LIFNR)·회사코드·계정유형 K·특별G/L 제외 지시자를 채운다.*
> 이 unit 의 조각 1개가 6/11줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [other] FB05 반제 대상 계정 선택 헤더 GT_BSELK 에 카드사 공급업체(LIFNR)·회사코드·계정유형 'K'·특별G/L 제외(XNOPS) 를 설정해 미결 채무를 반제 대상으로 지정한다.
```abap
1384| GT_BSELK-AGKON = GT_HEAD-LIFNR.
1385| GT_BSELK-AGBUK = P_BUKRS.
1386| GT_BSELK-AGKOA = C_K.
1387| GT_BSELK-XNOPS = C_X. "지시자: 특별 G/L이 아닌 미결항목만 선택합니까?
1388|
1389| APPEND GT_BSELK. CLEAR GT_BSELK.
```
- **EN**: Fill the FB05 clearing account selection header GT_BSELK with the card vendor, company code, account type K and the standard-open-items-only indicator XNOPS.
- SAP 객체: FB05, BSELK
- 업무 키워드: 반제 계정 선택, 공급업체, 미결 항목, 특별 G/L 제외, FB05
- English: Clearing, BSELK, Vendor, Open Items, FB05
- 정의부(복사 시 함께 필요): [`GT_BSELK`](#decl-zficom-112-gt_bselk), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`C_K`](#decl-zficom-218-c_k), [`C_X`](#decl-zficom-231-c_x)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1384-L1389` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#MAKE_BSELK#C1`
### FORM MAKE_BKPF — `ZFIR0120F01` L1397-L1410 (14줄)
*FB05 반제 전기용 전표 헤더(BBKPF)를 전표유형 KZ, 전기일, 회사코드, 현지통화, 반제 트랜잭션 UMBUCHNG(대체전기)로 구성한다.*
> 이 unit 의 조각 1개가 9/14줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [other] 배치입력 전표 헤더 GT_BBKPF 에 T-Code FB05, 전표유형 KZ(지급), 전표일·전기일(P_BUDAT), 회사코드, 통화(T001-WAERS), 반제 트랜잭션 UMBUCHNG(반제 후 대체전기)을 설정한다.
```abap
1400| GT_BBKPF-TCODE = 'FB05'.
1401| GT_BBKPF-BLDAT = P_BUDAT.
1402| GT_BBKPF-BUDAT = P_BUDAT.
1403| GT_BBKPF-BLART = 'KZ'.
1404| GT_BBKPF-BUKRS = P_BUKRS.
1405| GT_BBKPF-WAERS = T001-WAERS.
1406| GT_BBKPF-AUGLV = 'UMBUCHNG'. "반제하여 대체전기
1407|
1408| APPEND GT_BBKPF.
```
- **EN**: Prepare the batch-input document header GT_BBKPF for FB05 with document type KZ, document/posting date, company code, local currency and clearing transaction UMBUCHNG (transfer posting with clearing).
- SAP 객체: FB05, BBKPF, T001
- 업무 키워드: 전표 헤더, 반제 전기, 대체전기, 전표유형 KZ, FB05
- English: Document Header, BBKPF, Clearing Transaction, UMBUCHNG, FB05
- 정의부(복사 시 함께 필요): [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`P_BUDAT`](#decl-zfir0120top-189-p_budat), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`T001`](#decl-zficom-11-t001)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1400-L1408` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#MAKE_BKPF#C1`
### FORM MAKE_BSEG — `ZFIR0120F01` L1416-L1435 (20줄)
*코스트센터별 청구할인 금액(GT_AMT_G)을 G/L 계정 라인(BBSEG)으로 만들어 금액 부호에 따라 전기키 50/40 과 반대전기 지시자를 설정한다.*
> 이 unit 의 조각 1개가 16/20줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [calculation] 코스트센터·G/L 계정별 청구할인 금액을 양수면 전기키 50(대변), 음수면 전기키 40(차변)+반대전기(XNEGP)로 BBSEG 라인에 만들고 통화 변환 매크로 CHANGE_CURRENCY 로 금액을 넣으며 '법인카드 청구정산 청구할인' 적요와 코스트센터를 설정한다.
```abap
1418| LOOP AT GT_AMT_G.
1419| IF GT_AMT_G-DMBTR GT 0.
1420| GT_BBSEG-NEWBS = '50'.
1421| ELSE.
1422| GT_BBSEG-NEWBS = '40'.
1423| GT_BBSEG-XNEGP = C_X.
1424| GT_AMT_G-DMBTR = 0 - GT_AMT_G-DMBTR.
1425| ENDIF.
1426| GT_BBSEG-NEWKO = GT_AMT_G-HKONT.
1427| CHANGE_CURRENCY GT_AMT_G-DMBTR GT_BBSEG-WRBTR C_WAERS.
1428| CONCATENATE P_SPMON(4) '년' P_SPMON+4(2) ' 법인카드 청구정산 청구할인'
1429| INTO GT_BBSEG-SGTXT.
1430| GT_BBSEG-KOSTL = GT_AMT_G-KOSTL.
1431|
1432| APPEND GT_BBSEG. CLEAR GT_BBSEG.
1433| ENDLOOP.
```
- **EN**: Convert each cost-center/G-L account discount amount into a BBSEG line: posting key 50 for positive, 40 with negative-posting flag for negative amounts, converting the amount via CHANGE_CURRENCY and setting the text 'corporate card settlement discount' and cost center.
- SAP 객체: BBSEG
- 업무 키워드: 청구할인, 법인카드 정산, 전기키, 반대전기, 코스트센터, G/L 라인
- English: Posting Key, Negative Posting, Cost Center, BBSEG, G/L Line Item
- 정의부(복사 시 함께 필요): [`GT_AMT_G`](#decl-zfir0120top-103-gt_amt_g), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`C_X`](#decl-zficom-231-c_x), [`CHANGE_CURRENCY`](#decl-zficom-333-change_currency), [`C_WAERS`](#decl-zficom-199-c_waers), [`P_SPMON`](#decl-zfir0120top-162-p_spmon)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1418-L1433` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#MAKE_BSEG#C1`
### FORM BDC_FB05 — `ZFIR0120F01` L1441-L1525 (85줄)
*구성한 반제 데이터로 전표를 전기하고 결과를 화면 테이블·정산 이력에 반영한다.*
> 이 unit 의 조각 2개가 75/85줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [fm_call] 커스텀 전기 함수에 전표 헤더·아이템과 반제 선택 테이블(BSELK/BSELP)을 함께 넘겨 반제 전표를 생성한다.
```abap
1448| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING'
1449| EXPORTING
1450| I_BDC_MODE = GV_MODE
1451| I_MESSAGE = SPACE
1452| IMPORTING
1453| E_BELNR = GV_BELNR
1454| E_GJAHR = GV_GJAHR
1455| E_BUKRS = GV_BUKRS
1456| TABLES
1457| T_BBKPF = GT_BBKPF
1458| T_BBSEG = GT_BBSEG
1459| T_BSELK = GT_BSELK
1460| T_BSELP = GT_BSELP
1461| T_MESSTAB = GT_FIMSG.
```
- **EN**: Posts the clearing document by passing header/items plus the clearing selection tables (BSELK/BSELP) to the custom posting FM.
- 호출(파서): Z_FI_DOCUMENT_POSTING
- SAP 객체: Z_FI_DOCUMENT_POSTING, BSELK, BSELP, BBKPF, BBSEG
- 업무 키워드: 반제전표, 전기, 반제선택, 전표생성
- English: clearing document, posting, clearing selection, FB05
- 정의부(복사 시 함께 필요): [`GV_MODE`](#decl-zficom-174-gv_mode), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GV_BUKRS`](#decl-zficom-105-gv_bukrs), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_BSELK`](#decl-zficom-112-gt_bselk), [`GT_BSELP`](#decl-zficom-113-gt_bselp), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg)
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1448-L1461` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#BDC_FB05#C1`
#### [control_flow] 성공하면 반제전표번호·반제일을 정산 헤더/아이템과 화면 테이블에 채우고 상태 아이콘을 녹색으로, 실패하면 메시지 테이블에서 오류를 뽑아 문구를 만들고 아이콘을 빨간색으로 바꾼 뒤, 처리일시·처리자와 함께 변경분만 갱신한다.
```abap
1463| IF GV_BELNR NE SPACE.
1464| GT_Z0150_S-AUGBL = GT_Z0151_S-AUGBL = GV_BELNR.
1465| GT_Z0150_S-AUGDT = GT_Z0151_S-AUGDT = P_BUDAT.
1466|
1467| GT_HEAD-AUGBL = GT_ITEM-AUGBL = GV_BELNR.
1468| GT_HEAD-AUGDT = GT_ITEM-AUGDT = P_BUDAT.
1469| GT_HEAD-CICON = ICON_GREEN_LIGHT.
1470| ELSE.
1471| READ TABLE GT_FIMSG WITH KEY MSGTY = C_E. "에러
1472| IF SY-SUBRC <> 0.
1473| READ TABLE GT_FIMSG WITH KEY MSGTY = C_A. "AVEND
1474| ENDIF.
1475| IF GT_FIMSG IS INITIAL.
1476| * 메시지 타입이 정상이면서 에러인 건이 있는지 확인
1477| DESCRIBE TABLE GT_MESS LINES GV_INDEX.
1478| READ TABLE GT_MESS INDEX GV_INDEX.
1479| IF SY-SUBRC EQ 0.
1480| CALL FUNCTION 'MESSAGE_TEXT_BUILD'
1481| EXPORTING
1482| MSGID = GT_FIMSG-MSGID
1483| MSGNR = GT_FIMSG-MSGNO
1484| MSGV1 = GT_FIMSG-MSGV1
1485| MSGV2 = GT_FIMSG-MSGV2
1486| MSGV3 = GT_FIMSG-MSGV3
1487| MSGV4 = GT_FIMSG-MSGV4
1488| IMPORTING
1489| MESSAGE_TEXT_OUTPUT = GT_Z0150-MESSG.
1490| ENDIF.
1491| ELSE.
1492| CALL FUNCTION 'MESSAGE_TEXT_BUILD'
1493| EXPORTING
1494| MSGID = GT_FIMSG-MSGID
1495| MSGNR = GT_FIMSG-MSGNO
1496| MSGV1 = GT_FIMSG-MSGV1
1497| MSGV2 = GT_FIMSG-MSGV2
1498| MSGV3 = GT_FIMSG-MSGV3
1499| MSGV4 = GT_FIMSG-MSGV4
1500| IMPORTING
1501| MESSAGE_TEXT_OUTPUT = GT_Z0150_S-MESSG.
1502| ENDIF.
1503| GT_HEAD-CICON = ICON_RED_LIGHT.
1504| ENDIF.
1505| GT_Z0151_S-MESSG = GT_Z0150_S-MESSG.
1506| GT_Z0150_S-CDATE = GT_Z0151_S-CDATE = SY-DATUM.
1507| GT_Z0150_S-CTIME = GT_Z0151_S-CTIME = SY-UZEIT.
1508| GT_Z0150_S-CNAME = GT_Z0151_S-CNAME = SY-UNAME.
1509|
1510| MODIFY GT_Z0150_S TRANSPORTING AUGBL AUGDT MESSG
1511| CDATE CTIME CNAME
1512| WHERE CDATE EQ SPACE.
1513|
1514| MODIFY GT_Z0151_S TRANSPORTING AUGBL AUGDT MESSG
1515| CDATE CTIME CNAME
1516| WHERE CDATE EQ SPACE.
1517|
1518| GT_HEAD-MESSG = GT_Z0150_S-MESSG.
1519| CLEAR: GT_HEAD-CHFLG, GT_ITEM-CHFLG.
1520| MODIFY GT_HEAD TRANSPORTING AUGBL AUGDT MESSG CHFLG CICON
1521| WHERE CHFLG EQ C_X.
1522| MODIFY GT_ITEM TRANSPORTING AUGBL AUGDT CHFLG
1523| WHERE CHFLG EQ C_X.
```
- **EN**: On success stamps clearing document number/date and a green status icon; on failure builds an error text and sets a red icon, then updates only the changed rows with audit fields.
- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [GT_ITEM](/tables/GT_ITEM.md)
- 호출(파서): MESSAGE_TEXT_BUILD, MESSAGE_TEXT_BUILD
- SAP 객체: MESSAGE_TEXT_BUILD, ZFIT0150, ZFIT0151, AUGBL, AUGDT
- 업무 키워드: 반제결과, 반제전표번호, 상태아이콘, 오류메시지, 처리일시, 변경분갱신
- English: clearing result, clearing document number, status icon, error message, audit fields
- 정의부(복사 시 함께 필요): [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GT_Z0150_S`](#decl-zfir0120top-97-gt_z0150_s), [`GT_Z0151_S`](#decl-zfir0120top-98-gt_z0151_s), [`P_BUDAT`](#decl-zfir0120top-189-p_budat), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_MESS`](#decl-zficom-172-gt_mess), [`GV_INDEX`](#decl-zficom-82-gv_index), [`GT_Z0150`](#decl-zfir0120top-95-gt_z0150) 외 1건
- 위치: `abap://ZFIR0120/ZFIR0120F01#L1463-L1523` · confidence 0.86 · `ZFIR0120#ZFIR0120F01#FORM#BDC_FB05#C2`
### MODULE USER_COMMAND_0100 INPUT — `ZFIR0120I01` L9-L17 (9줄)
*화면 0100 PAI 에서 POST 기능코드일 때 DOCUMENT_POSTING 을 호출해 전표를 생성하는 사용자 명령 MODULE 이다.*
> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [control_flow] 사용자 명령이 POST(전표생성)이면 DOCUMENT_POSTING 을 수행해 법인카드 청구정산 전표를 전기한다.
```abap
11| GV_UCOMM = SY-UCOMM.
12| CASE GV_UCOMM.
13| * 전표생성
14| WHEN 'POST'.
15| PERFORM DOCUMENT_POSTING.
16| ENDCASE.
```
- **EN**: Dispatch the POST user command to DOCUMENT_POSTING, which posts the corporate card settlement document.
- 호출(파서): DOCUMENT_POSTING
- 업무 키워드: 전표생성, 사용자 명령, 전기
- English: User Command, Document Posting, PAI
- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zficom-71-gv_ucomm)
- 위치: `abap://ZFIR0120/ZFIR0120I01#L11-L16` · confidence 0.8 · `ZFIR0120#ZFIR0120I01#MODULE#USER_COMMAND_0100_INPUT#C1`
## 정의부 (333건)
로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/<chunk_id>``declaration_code` 로 받는다.
### `ZFIALV` (76건)
#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis}
```abap
TYPE-POOLS : SLIS.
```
#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver}
```abap
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS :
HANDLE_CLOSE
FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER
IMPORTING SENDER.
PRIVATE SECTION.
* 'X': does exist, SPACE: does not ex.
DATA : DIALOGBOX_STATUS TYPE C.
ENDCLASS. "lcl_event_receiver DEFINITION
```
#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat}
```abap
DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA
```
#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head}
```abap
DATA:
GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD
```
#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item}
```abap
DATA:
GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM
```
#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field}
```abap
DATA:
GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV.
```
#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop}
```abap
DATA:
GT_DROP TYPE LVC_T_DROP. " Drop-down
```
#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral}
```abap
DATA:
GT_DRAL TYPE LVC_T_DRAL.
```
#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo}
```abap
DATA:
GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT
```
#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event}
```abap
DATA:
GT_EVENT TYPE SLIS_T_EVENT. " EVENT
```
#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print}
```abap
DATA:
GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT
```
#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader}
```abap
DATA:
GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE
```
#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab}
```abap
DATA:
GT_CELLTAB TYPE LVC_T_STYL.
```
#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color}
```abap
DATA:
GT_COLOR TYPE LVC_T_SCOL.
```
#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo}
```abap
DATA:
GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
```
#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head}
```abap
DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD
```
#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item}
```abap
DATA:
GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM
```
#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop}
```abap
DATA:
GS_DROP TYPE LVC_S_DROP. " Drop-down
```
#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral}
```abap
DATA:
GS_DRAL TYPE LVC_S_DRAL.
```
#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo}
```abap
DATA:
GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT
```
#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event}
```abap
DATA:
GS_EVENT LIKE LINE OF GT_EVENT. " EVENT
```
#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant}
```abap
DATA:
GS_VARIANT LIKE DISVARIANT. " Layout
```
#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant}
```abap
DATA:
GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout
```
#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout}
```abap
DATA:
GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout
```
#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user}
```abap
DATA:
GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER.
```
#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader}
```abap
DATA:
GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE
```
#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo}
```abap
DATA:
GS_KEYINFO TYPE SLIS_KEYINFO_ALV.
```
#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab}
```abap
DATA:
GS_CELLTAB TYPE LVC_S_STYL.
```
#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color}
```abap
DATA:
GS_COLOR TYPE LVC_S_SCOL.
```
#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset}
```abap
DATA:
GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING
```
#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid}
```abap
DATA : GV_REPID TYPE SY-REPID. " Program-ID.
```
#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program}
```abap
DATA:
GV_PROGRAM LIKE SY-REPID. " Program-ID
```
#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname}
```abap
DATA:
GV_INCLNAME LIKE SY-REPID.
```
#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title}
```abap
DATA:
GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE
```
#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit}
```abap
DATA:
GV_VARIANT_EXIT(1) TYPE C.
```
#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save}
```abap
DATA:
GV_SAVE(1) TYPE C.
```
#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head}
```abap
DATA:
GV_TABNAME_HEAD TYPE SLIS_TABNAME.
```
#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item}
```abap
DATA:
GV_TABNAME_ITEM TYPE SLIS_TABNAME.
```
#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status}
```abap
DATA:
GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'.
```
#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command}
```abap
DATA:
GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
```
#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed}
```abap
DATA:
GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'.
```
#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page}
```abap
DATA:
GV_TOP_OF_PAGE TYPE SLIS_FORMNAME.
```
#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code}
```abap
DATA:
GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'.
```
#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head}
```abap
DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT.
```
#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item}
```abap
DATA:
GT_FCAT_ITEM TYPE LVC_T_FCAT.
```
#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head}
```abap
DATA:
GS_FCAT_HEAD TYPE LVC_S_FCAT.
```
#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item}
```abap
DATA:
GS_FCAT_ITEM TYPE LVC_S_FCAT.
```
#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on}
```abap
DATA:
GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT
```
#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort}
```abap
DATA:
GT_SORT TYPE LVC_T_SORT. " Sort
```
#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort}
```abap
DATA:
GS_SORT TYPE LVC_S_SORT. " Sort
```
#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4}
```abap
DATA:
GT_F4 TYPE LVC_T_F4.
```
#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4}
```abap
DATA:
GS_F4 TYPE LVC_S_F4. " F4
```
#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id}
```abap
DATA:
GS_ROW_ID TYPE LVC_S_ROW. " Cursor
```
#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id}
```abap
DATA:
GS_COLUMN_ID TYPE LVC_S_COL.
```
#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding}
```abap
DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB.
```
#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit}
```abap
DATA:
GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT.
```
#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar}
```abap
DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR.
```
#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node}
```abap
DATA:
GV_TOP_NODE TYPE LVC_NKEY.
```
#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree}
```abap
DATA:
GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE.
```
#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item}
```abap
DATA:
GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID.
```
#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row}
```abap
DATA:
GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX
```
#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid}
```abap
DATA:
GT_ROID TYPE LVC_T_ROID.
```
#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude}
```abap
DATA:
GT_EXCLUDE TYPE UI_FUNCTIONS.
```
#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude}
```abap
DATA:
GS_EXCLUDE TYPE UI_FUNC.
```
#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid}
```abap
DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER.
```
#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid}
```abap
DATA:
CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
```
#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2}
```abap
DATA:
CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
```
#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog}
```abap
DATA:
CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER.
```
#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver}
```abap
DATA:
GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
```
#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm}
```abap
DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어
```
#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01}
```abap
CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'.
```
#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02}
```abap
CONSTANTS:
C_BDC02(9) TYPE C VALUE 'Field'.
```
#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03}
```abap
CONSTANTS:
C_BDC03(9) TYPE C VALUE 'Type'.
```
#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04}
```abap
CONSTANTS:
C_BDC04(9) TYPE C VALUE 'Length'.
```
#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05}
```abap
CONSTANTS:
C_BDC05(9) TYPE C VALUE 'Required'.
```
#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06}
```abap
CONSTANTS:
C_BDC06(9) TYPE C VALUE 'Example'.
```
### `ZFICOM` (201건)
#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon}
```abap
TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT.
```
#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde}
```abap
TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT.
```
#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp}
```abap
TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT.
```
#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit}
```abap
TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT.
```
#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm}
```abap
TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT.
```
#### T001 — tables · L11-L11 {#decl-zficom-11-t001}
```abap
TABLES : T001. " Company Codes
```
#### T005 — tables · L12-L12 {#decl-zficom-12-t005}
```abap
TABLES:
T005. " Land
```
#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf}
```abap
TABLES:
BKPF. " Accounting Document Heade
```
#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg}
```abap
TABLES:
BSEG. " Accounting Document Segment
```
#### BSID — tables · L15-L15 {#decl-zficom-15-bsid}
```abap
TABLES:
BSID. " Accounting: Secondary Index for Customers
```
#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad}
```abap
TABLES:
BSAD. " Accounting: Secondary Index for Customers
```
#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik}
```abap
TABLES:
BSIK. " Accounting: Secondary Index for Vendors
```
#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak}
```abap
TABLES:
BSAK. " Accounting: Secondary Index for Vendors
```
#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis}
```abap
TABLES:
BSIS. " Accounting: Secondary Index for G/L Accounts
```
#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas}
```abap
TABLES:
BSAS. " Accounting: Secondary Index for G/L Accounts
```
#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec}
```abap
TABLES:
BSEC. " One-Time Account Data Document Segment
```
#### BSET — tables · L25-L25 {#decl-zficom-25-bset}
```abap
TABLES:
BSET. " Tax Data Document Segment
```
#### BSED — tables · L26-L26 {#decl-zficom-26-bsed}
```abap
TABLES:
BSED. " n Bill of Exchange Fields Docume
```
#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf}
```abap
TABLES:
VBKPF. " Document Header for Document Parking
```
#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs}
```abap
TABLES:
VBSEGS. " Document Segment for Document Parking
```
#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd}
```abap
TABLES:
VBSEGD. " Document Segment for Customer Document Parking
```
#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk}
```abap
TABLES:
VBSEGK. " Document Segment for Vendor Document Parking
```
#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset}
```abap
TABLES:
VBSET. " Document Segment for Taxes Document Parking
```
#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec}
```abap
TABLES:
VBSEC. " Document Parking One-Time Data Document Segment
```
#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1}
```abap
TABLES:
SKA1. " G/L Account Master (Chart of Accounts)
```
#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1}
```abap
TABLES:
SKB1. " G/L account master (company code)
```
#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1}
```abap
TABLES:
LFA1. " Vendor Master (General Section)
```
#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1}
```abap
TABLES:
LFB1. " Vendor Master (Company Code)
```
#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1}
```abap
TABLES:
KNA1. " General Data in Customer Master
```
#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1}
```abap
TABLES:
KNB1. " Customer Master (Company Code)
```
#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc}
```abap
TABLES:
ADRC. " Addresses (Business Address Services)
```
#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01}
```abap
TABLES:
USR01. " User master record (runtime data)
```
#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05}
```abap
TABLES:
USR05. " User Master Parameter ID
```
#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21}
```abap
TABLES:
USR21. " Assign user name address key
```
#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160}
```abap
TABLES:
ZFIT0160. " FI 권한 관리 테이블
```
#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params}
```abap
TABLES : CTU_PARAMS. "CALL TRANSACTION USING...
```
#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql}
```abap
DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE.
```
#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field}
```abap
DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE.
```
#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field}
```abap
DATA:
GV_FIELD LIKE HELP_INFO-FIELDNAME.
```
#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value}
```abap
DATA:
GV_VALUE LIKE HELP_INFO-FLDVALUE.
```
#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix}
```abap
DATA:
GV_TABIX LIKE SY-TABIX.
```
#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp}
```abap
DATA : GT_SHLP TYPE SHLP_DESCR_T.
```
#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields}
```abap
DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
```
#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues}
```abap
DATA:
GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.
```
#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive}
```abap
DATA:
GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
```
#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode}
```abap
DATA:
GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control
```
#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt}
```abap
DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count
```
#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill}
```abap
DATA:
GV_TFILL LIKE SY-TFILL. " Current number of lines
```
#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc}
```abap
DATA:
GV_SUBRC LIKE SY-SUBRC. " Return Value
```
#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm}
```abap
DATA:
GV_UCOMM LIKE SY-UCOMM. " Function Code
```
#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title}
```abap
DATA:
GV_TITLE LIKE SY-TITLE. " Title
```
#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum}
```abap
DATA:
GV_DATUM LIKE SY-DATUM. " Date
```
#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type}
```abap
DATA:
GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag
```
#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno}
```abap
DATA:
GV_SEQNO(3) TYPE N. " Seqence No
```
#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field}
```abap
DATA:
GV_CURSOR_FIELD(30). " CURSOR FIELD
```
#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line}
```abap
DATA:
GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE
```
#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d}
```abap
DATA : GV_10_D(16) TYPE P DECIMALS 0.
```
#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin}
```abap
DATA : GV_TABIN(06). " total count
```
#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index}
```abap
DATA:
GV_INDEX(06). " progress count
```
#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr}
```abap
DATA:
GV_KBETR(05). " progress percent
```
#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic}
```abap
DATA:
GV_INDIC(80). " progress status
```
#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text}
```abap
DATA:
GV_TEXT(100).
```
#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check}
```abap
DATA : GF_CHECK(1). " Input Check
```
#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark}
```abap
DATA:
GF_MARK(1). " Select Flag
```
#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock}
```abap
DATA:
GF_LOCK(1). " Lock Flag
```
#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer}
```abap
DATA:
GF_ANSWER(1). " MessageBox Return Value
```
#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color}
```abap
DATA:
GF_COLOR(1). " LINE COLOR
```
#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name}
```abap
DATA : GV_NAME TYPE VRM_ID.
```
#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list}
```abap
DATA:
GT_LIST TYPE VRM_VALUES.
```
#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value}
```abap
DATA:
GS_VALUE LIKE LINE OF GT_LIST.
```
#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname}
```abap
DATA : GV_FNAME TYPE RS38L_FNAM.
```
#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options}
```abap
DATA:
GS_OPTIONS TYPE SSFCOMPOP.
```
#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device}
```abap
DATA:
GS_DEVICE TYPE SSFCTRLOP.
```
#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest}
```abap
DATA:
GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'.
```
#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info}
```abap
DATA:
GS_JOB_OUTPUT_INFO TYPE SSFCRESCL.
```
#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr}
```abap
DATA : GV_BELNR LIKE BKPF-BELNR.
```
#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs}
```abap
DATA:
GV_BUKRS LIKE BKPF-BUKRS.
```
#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr}
```abap
DATA:
GV_GJAHR LIKE BKPF-GJAHR.
```
#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei}
```abap
DATA:
GV_BUZEI LIKE BSEG-BUZEI.
```
#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf}
```abap
DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE.
```
#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg}
```abap
DATA:
GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE.
```
#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax}
```abap
DATA:
GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE.
```
#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith}
```abap
DATA:
GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE.
```
#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk}
```abap
DATA:
GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE.
```
#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp}
```abap
DATA:
GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE.
```
#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg}
```abap
DATA:
GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE.
```
#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg}
```abap
DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE.
```
#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk}
```abap
DATA : GS_ACCPMBLK LIKE ACCPMBLK.
```
#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows}
```abap
DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows
```
#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows}
```abap
DATA:
GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description
```
#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos}
```abap
DATA:
GV_ROW_POS TYPE I.
```
#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab}
```abap
DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE.
```
#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data}
```abap
DATA : BEGIN OF GS_EMAIL_DATA.
INCLUDE STRUCTURE SODOCCHGI1.
DATA : END OF GS_EMAIL_DATA.
```
#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email}
```abap
DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE.
```
#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext}
```abap
DATA:
GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.
```
#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar}
```abap
DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE.
```
#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr}
```abap
DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR.
```
#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first}
```abap
DATA : GF_FIRST(1) TYPE C.
```
#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new}
```abap
DATA:
GF_NEW(1) TYPE C.
```
#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end}
```abap
DATA:
GF_END(1) TYPE C.
```
#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last}
```abap
DATA:
GF_LAST(1) TYPE C.
```
#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk}
```abap
DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code
```
#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst}
```abap
DATA:
GV_KURST LIKE TCURR-KURST. " Exchange rate type
```
#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm}
```abap
DATA:
GV_KALSM LIKE T005-KALSM. " Procedure
```
#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs}
```abap
DATA:
GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area
```
#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse}
```abap
DATA : BEGIN OF GT_BSE OCCURS 0,
BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드
BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호
GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도
INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호
WAERS LIKE BSE_CLR-WAERS, "통화 키
CLRIN LIKE BSE_CLR-CLRIN, "반제유형
BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드
BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호
GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도
BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호
SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자
DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화)
DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화)
WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화)
DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화)
END OF GT_BSE.
```
#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc}
```abap
DATA : BEGIN OF GT_BDC OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA : END OF GT_BDC.
```
#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess}
```abap
DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
```
#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode}
```abap
DATA : GV_MODE(1) VALUE 'N'. "BDC MODE
```
#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log}
```abap
DATA : GS_LOG TYPE BAL_S_LOG.
```
#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle}
```abap
DATA:
GS_LOG_HANDLE TYPE BALLOGHNDL.
```
#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile}
```abap
DATA:
GS_DISPLAY_PROFILE TYPE BAL_S_PROF.
```
#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle}
```abap
DATA:
GT_LOG_HANDLE TYPE BAL_T_LOGH.
```
#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg}
```abap
DATA:
GS_MSG TYPE BAL_S_MSG.
```
#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat}
```abap
DATA:
GS_BAL_FCAT TYPE BAL_S_FCAT.
```
#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos}
```abap
DATA:
GV_COL_POS TYPE I.
```
#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct}
```abap
DATA : BEGIN OF GT_STRUCT OCCURS 0,
SEQNO(03), "Sequence no
FNAME(60), "Field name
FTYPE(04), "Type
FLENG(03), "Length
FFLAG(50), "Required
FEXAM(80), "Example
* FNOTE(80), "Note
END OF GT_STRUCT.
```
#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs}
```abap
CONSTANTS:
C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code
```
#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers}
```abap
CONSTANTS:
C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key
```
#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu}
```abap
CONSTANTS:
C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key
```
#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1}
```abap
CONSTANTS:
C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key
```
#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl}
```abap
CONSTANTS:
C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts
```
#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs}
```abap
CONSTANTS:
C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area
```
#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm}
```abap
CONSTANTS:
C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure
```
#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst}
```abap
CONSTANTS:
C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type
```
#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras}
```abap
CONSTANTS:
C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key
```
#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid}
```abap
CONSTANTS:
C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어
```
#### C_A — constants · L208-L208 {#decl-zficom-208-c_a}
```abap
CONSTANTS:
C_A(1) TYPE C VALUE 'A'.
```
#### C_B — constants · L209-L209 {#decl-zficom-209-c_b}
```abap
CONSTANTS:
C_B(1) TYPE C VALUE 'B'.
```
#### C_C — constants · L210-L210 {#decl-zficom-210-c_c}
```abap
CONSTANTS:
C_C(1) TYPE C VALUE 'C'.
```
#### C_D — constants · L211-L211 {#decl-zficom-211-c_d}
```abap
CONSTANTS:
C_D(1) TYPE C VALUE 'D'.
```
#### C_E — constants · L212-L212 {#decl-zficom-212-c_e}
```abap
CONSTANTS:
C_E(1) TYPE C VALUE 'E'.
```
#### C_F — constants · L213-L213 {#decl-zficom-213-c_f}
```abap
CONSTANTS:
C_F(1) TYPE C VALUE 'F'.
```
#### C_G — constants · L214-L214 {#decl-zficom-214-c_g}
```abap
CONSTANTS:
C_G(1) TYPE C VALUE 'G'.
```
#### C_H — constants · L215-L215 {#decl-zficom-215-c_h}
```abap
CONSTANTS:
C_H(1) TYPE C VALUE 'H'.
```
#### C_I — constants · L216-L216 {#decl-zficom-216-c_i}
```abap
CONSTANTS:
C_I(1) TYPE C VALUE 'I'.
```
#### C_J — constants · L217-L217 {#decl-zficom-217-c_j}
```abap
CONSTANTS:
C_J(1) TYPE C VALUE 'J'.
```
#### C_K — constants · L218-L218 {#decl-zficom-218-c_k}
```abap
CONSTANTS:
C_K(1) TYPE C VALUE 'K'.
```
#### C_L — constants · L219-L219 {#decl-zficom-219-c_l}
```abap
CONSTANTS:
C_L(1) TYPE C VALUE 'L'.
```
#### C_M — constants · L220-L220 {#decl-zficom-220-c_m}
```abap
CONSTANTS:
C_M(1) TYPE C VALUE 'M'.
```
#### C_N — constants · L221-L221 {#decl-zficom-221-c_n}
```abap
CONSTANTS:
C_N(1) TYPE C VALUE 'N'.
```
#### C_O — constants · L222-L222 {#decl-zficom-222-c_o}
```abap
CONSTANTS:
C_O(1) TYPE C VALUE 'O'.
```
#### C_P — constants · L223-L223 {#decl-zficom-223-c_p}
```abap
CONSTANTS:
C_P(1) TYPE C VALUE 'P'.
```
#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q}
```abap
CONSTANTS:
C_Q(1) TYPE C VALUE 'Q'.
```
#### C_R — constants · L225-L225 {#decl-zficom-225-c_r}
```abap
CONSTANTS:
C_R(1) TYPE C VALUE 'R'.
```
#### C_S — constants · L226-L226 {#decl-zficom-226-c_s}
```abap
CONSTANTS:
C_S(1) TYPE C VALUE 'S'.
```
#### C_T — constants · L227-L227 {#decl-zficom-227-c_t}
```abap
CONSTANTS:
C_T(1) TYPE C VALUE 'T'.
```
#### C_U — constants · L228-L228 {#decl-zficom-228-c_u}
```abap
CONSTANTS:
C_U(1) TYPE C VALUE 'U'.
```
#### C_V — constants · L229-L229 {#decl-zficom-229-c_v}
```abap
CONSTANTS:
C_V(1) TYPE C VALUE 'V'.
```
#### C_W — constants · L230-L230 {#decl-zficom-230-c_w}
```abap
CONSTANTS:
C_W(1) TYPE C VALUE 'W'.
```
#### C_X — constants · L231-L231 {#decl-zficom-231-c_x}
```abap
CONSTANTS:
C_X(1) TYPE C VALUE 'X'.
```
#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y}
```abap
CONSTANTS:
C_Y(1) TYPE C VALUE 'Y'.
```
#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z}
```abap
CONSTANTS:
C_Z(1) TYPE C VALUE 'Z'.
```
#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0}
```abap
CONSTANTS:
C_0(1) TYPE C VALUE '0'.
```
#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1}
```abap
CONSTANTS:
C_1(1) TYPE C VALUE '1'.
```
#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2}
```abap
CONSTANTS:
C_2(1) TYPE C VALUE '2'.
```
#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3}
```abap
CONSTANTS:
C_3(1) TYPE C VALUE '3'.
```
#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4}
```abap
CONSTANTS:
C_4(1) TYPE C VALUE '4'.
```
#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5}
```abap
CONSTANTS:
C_5(1) TYPE C VALUE '5'.
```
#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6}
```abap
CONSTANTS:
C_6(1) TYPE C VALUE '6'.
```
#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7}
```abap
CONSTANTS:
C_7(1) TYPE C VALUE '7'.
```
#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8}
```abap
CONSTANTS:
C_8(1) TYPE C VALUE '8'.
```
#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9}
```abap
CONSTANTS:
C_9(1) TYPE C VALUE '9'.
```
#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq}
```abap
CONSTANTS:
C_EQ(2) TYPE C VALUE 'EQ'.
```
#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne}
```abap
CONSTANTS:
C_NE(2) TYPE C VALUE 'NE'.
```
#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt}
```abap
CONSTANTS:
C_BT(2) TYPE C VALUE 'BT'.
```
#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp}
```abap
CONSTANTS:
C_CP(2) TYPE C VALUE 'CP'.
```
#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np}
```abap
CONSTANTS:
C_NP(2) TYPE C VALUE 'NP'.
```
#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le}
```abap
CONSTANTS:
C_LE(2) TYPE C VALUE 'LE'.
```
#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt}
```abap
CONSTANTS:
C_LT(2) TYPE C VALUE 'LT'.
```
#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge}
```abap
CONSTANTS:
C_GE(2) TYPE C VALUE 'GE'.
```
#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt}
```abap
CONSTANTS:
C_GT(2) TYPE C VALUE 'GT'.
```
#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0}
```abap
CONSTANTS:
C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code
```
#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1}
```abap
CONSTANTS:
C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code
```
#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01}
```abap
CONSTANTS:
C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code
```
#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05}
```abap
CONSTANTS:
C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code
```
#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08}
```abap
CONSTANTS:
C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code
```
#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input}
```abap
DEFINE ALPHA_INPUT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = &1
IMPORTING
OUTPUT = &2.
END-OF-DEFINITION.
```
#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output}
```abap
DEFINE ALPHA_OUTPUT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = &1
IMPORTING
OUTPUT = &2.
END-OF-DEFINITION.
```
#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges}
```abap
DEFINE SET_RANGES.
CLEAR &1.
&1-SIGN = &2.
&1-OPTION = &3.
&1-LOW = &4.
&1-HIGH = &5.
COLLECT &1.
END-OF-DEFINITION.
```
#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day}
```abap
DEFINE LAST_DAY.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = &1
IMPORTING
LAST_DAY_OF_MONTH = &2.
END-OF-DEFINITION.
```
#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit}
```abap
DEFINE CHANGE_UNIT.
WRITE &1 TO &2 CURRENCY &3.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = &2.
END-OF-DEFINITION.
```
#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency}
```abap
DEFINE CHANGE_CURRENCY.
CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC'
EXPORTING
CURRENCY = &3
SAP_AMOUNT = &1
IMPORTING
IDOC_AMOUNT = &2.
END-OF-DEFINITION.
```
#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap}
```abap
DEFINE CHANGE_CURRENCY_SAP.
CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP'
EXPORTING
CURRENCY = &3
IDOC_AMOUNT = &1
IMPORTING
SAP_AMOUNT = &2.
END-OF-DEFINITION.
```
#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2}
```abap
DEFINE WRITE_STCD2.
WRITE &1 TO &2 USING EDIT MASK '___-__-_____'.
END-OF-DEFINITION.
```
#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1}
```abap
DEFINE WRITE_STCD1.
WRITE &1 TO &2 USING EDIT MASK '______-_______'.
END-OF-DEFINITION.
```
#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang}
```abap
DATA : L_LANG LIKE SY-LANGU.
```
#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog}
```abap
DATA : LV_PROG LIKE D020S-PROG.
```
#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum}
```abap
DATA:
LV_DNUM LIKE D020S-DNUM.
```
#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len}
```abap
DATA : LV_LEN TYPE I.
```
#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos}
```abap
DATA:
LV_POS TYPE I.
```
#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type}
```abap
DATA:
LV_TYPE(3) TYPE C.
```
#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename}
```abap
DATA:
LV_FILENAME TYPE STRING.
```
#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data}
```abap
DATA:
LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA.
```
#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls}
```abap
DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE.
```
#### <FS> — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-}
```abap
FIELD-SYMBOLS <FS> TYPE ANY.
```
#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit}
```abap
DEFINE CHANGE_UNIT.
WRITE &1 TO &2 CURRENCY &3.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = &2.
END-OF-DEFINITION.
```
#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency}
```abap
DEFINE CHANGE_CURRENCY.
CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC'
EXPORTING
CURRENCY = &3
SAP_AMOUNT = &1
IMPORTING
IDOC_AMOUNT = &2.
END-OF-DEFINITION.
```
#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap}
```abap
DEFINE CHANGE_CURRENCY_SAP.
CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP'
EXPORTING
CURRENCY = &3
IDOC_AMOUNT = &1
IMPORTING
SAP_AMOUNT = &2.
END-OF-DEFINITION.
```
#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text}
```abap
DATA : LV_TEXT(100).
```
#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen}
```abap
DATA:
LV_PCEN(3).
```
### `ZFIR0120CLS` (3건)
#### LCL_EVENT_RECEIVER_GRID — class · L7-L27 {#decl-zfir0120cls-7-lcl_event_receiver_grid}
```abap
CLASS LCL_EVENT_RECEIVER_GRID DEFINITION.
PUBLIC SECTION.
METHODS :
HANDLE_HOTSPOT_CLICK
FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
HANDLE_HOTSPOT_CLICK2
FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN ES_ROW_NO .
ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION
```
#### GV_EVENT1 — data · L48-L48 {#decl-zfir0120cls-48-gv_event1}
```abap
DATA : GV_EVENT1 TYPE REF TO LCL_EVENT_RECEIVER_GRID.
```
#### GV_EVENT2 — data · L49-L49 {#decl-zfir0120cls-49-gv_event2}
```abap
DATA:
GV_EVENT2 TYPE REF TO LCL_EVENT_RECEIVER_GRID.
```
### `ZFIR0120TOP` (48건)
#### ZUNICT1000 — tables · L7-L7 {#decl-zfir0120top-7-zunict1000}
```abap
TABLES: ZUNICT1000. " [ZUNIC] 법인카드 마스터
```
#### ZUNICT1001 — tables · L8-L8 {#decl-zfir0120top-8-zunict1001}
```abap
TABLES:
ZUNICT1001. " [ZUNIC] 법인카드 승인 데이타
```
#### ZUNICT1002 — tables · L9-L9 {#decl-zfir0120top-9-zunict1002}
```abap
TABLES:
ZUNICT1002. " [ZUNIC] 법인카드 매입 데이타
```
#### ZUNICT1003 — tables · L10-L10 {#decl-zfir0120top-10-zunict1003}
```abap
TABLES:
ZUNICT1003. " [ZUNIC] 법인카드 청구 데이타
```
#### TKA02 — tables · L11-L11 {#decl-zfir0120top-11-tka02}
```abap
TABLES:
TKA02.
```
#### GT_HEAD — data · L17-L49 {#decl-zfir0120top-17-gt_head}
```abap
DATA: BEGIN OF GT_HEAD OCCURS 0,
CICON LIKE ICON-ID,
BUKRS LIKE ZUNICT1002-BUKRS,
COMP LIKE ZUNICT1000-COMP,
CARDNO LIKE ZUNICT1002-CARDNO,
CUSER LIKE ZUNICT1000-CUSER,
LIFNR LIKE ZUNICT1000-LIFNR,
STCD2 LIKE LFA1-STCD2,
LIFNR_T LIKE LFA1-NAME1,
AMT_A LIKE ZUNICT1002-PU_AMT, "처리금액
AMT_B LIKE ZUNICT1002-PU_AMT, "대상금액
AMT_C LIKE ZUNICT1002-PU_AMT, "차액
AMT_D LIKE ZUNICT1002-PU_AMT, "미청구액
AMT_E LIKE ZUNICT1002-PU_AMT, "기반제액
AMT_F LIKE ZUNICT1002-PU_AMT, "청구금액
AMT_G LIKE ZUNICT1002-PU_AMT, "할인금액
AMT_H LIKE ZUNICT1002-PU_AMT, "잔액
KOSTL LIKE ZUNICT1000-KOSTL,
KOSTL_T LIKE CSKT-LTEXT,
AUGBL LIKE BSEG-AUGBL, "반제전표
AUAHR LIKE BKPF-GJAHR, "반제년도
AUGDT LIKE BSEG-AUGDT, "반제일
STBLG LIKE BKPF-STBLG, "역분개전표
STJAH LIKE BKPF-STJAH, "역분개년도
MESSG(100) TYPE C, "에러메시지
CDATE LIKE ZFIS0050-CDATE,
CTIME LIKE ZFIS0050-CTIME,
CNAME LIKE ZFIS0050-CNAME,
UDATE LIKE ZFIS0050-UDATE,
UTIME LIKE ZFIS0050-UTIME,
UNAME LIKE ZFIS0050-UNAME,
CHFLG(1) TYPE C,
END OF GT_HEAD.
```
#### GT_ITEM — data · L51-L87 {#decl-zfir0120top-51-gt_item}
```abap
DATA: BEGIN OF GT_ITEM OCCURS 0,
BUKRS LIKE ZUNICT1002-BUKRS,
COMP LIKE ZUNICT1000-COMP,
CARDNO LIKE ZUNICT1002-CARDNO,
CUSER LIKE ZUNICT1000-CUSER,
LIFNR LIKE ZUNICT1000-LIFNR,
STCD2 LIKE LFA1-STCD2,
LIFNR_T LIKE LFA1-NAME1,
KOSTL LIKE ZUNICT1000-KOSTL,
KOSTL_T LIKE CSKT-LTEXT,
AP_DATE LIKE ZUNICT1002-AP_DATE,
AP_NUM LIKE ZUNICT1002-AP_NUM,
PU_NUM LIKE ZUNICT1002-PU_NUM,
BELNR LIKE ZUNICT1002-BELNR,
GJAHR LIKE ZUNICT1002-GJAHR,
AP_AMT LIKE ZUNICT1001-AP_AMT,
PU_AMT LIKE ZUNICT1002-PU_AMT,
REQ_AMT LIKE ZUNICT1003-REQ_AMT,
STREGNM LIKE ZUNICT1002-STREGNM,
AMT_A LIKE ZUNICT1002-PU_AMT, "처리금액
AMT_B LIKE ZUNICT1002-PU_AMT, "대상금액
AMT_C LIKE ZUNICT1002-PU_AMT, "차액
AMT_D LIKE ZUNICT1002-PU_AMT, "미청구액
AMT_E LIKE ZUNICT1002-PU_AMT, "기반제액
AMT_F LIKE ZUNICT1002-PU_AMT, "청구금액
AMT_G LIKE ZUNICT1002-PU_AMT, "할인금액
AMT_H LIKE ZUNICT1002-PU_AMT, "잔액
STBLG LIKE BKPF-STBLG, "역분개전표
STJAH LIKE BKPF-STJAH, "역분개년도
BUZEI LIKE BSEG-BUZEI,
HKONT LIKE BSEG-HKONT,
KOSTL2 LIKE BSEG-KOSTL,
AUGBL LIKE BSEG-AUGBL,
AUAHR LIKE BKPF-GJAHR,
AUGDT LIKE BSEG-AUGDT,
CHFLG(1) TYPE C,
END OF GT_ITEM.
```
#### GT_ITEM2 — data · L89-L89 {#decl-zfir0120top-89-gt_item2}
```abap
DATA: GT_ITEM2 LIKE GT_ITEM OCCURS 0 WITH HEADER LINE.
```
#### GT_Z1000 — data · L91-L91 {#decl-zfir0120top-91-gt_z1000}
```abap
DATA: GT_Z1000 LIKE ZUNICT1000 OCCURS 0 WITH HEADER LINE.
```
#### GT_Z1001 — data · L92-L92 {#decl-zfir0120top-92-gt_z1001}
```abap
DATA:
GT_Z1001 LIKE ZUNICT1001 OCCURS 0 WITH HEADER LINE.
```
#### GT_Z1002 — data · L93-L93 {#decl-zfir0120top-93-gt_z1002}
```abap
DATA:
GT_Z1002 LIKE ZUNICT1002 OCCURS 0 WITH HEADER LINE.
```
#### GT_Z1003 — data · L94-L94 {#decl-zfir0120top-94-gt_z1003}
```abap
DATA:
GT_Z1003 LIKE ZUNICT1003 OCCURS 0 WITH HEADER LINE.
```
#### GT_Z0150 — data · L95-L95 {#decl-zfir0120top-95-gt_z0150}
```abap
DATA:
GT_Z0150 LIKE ZFIT0150 OCCURS 0 WITH HEADER LINE.
```
#### GT_Z0151 — data · L96-L96 {#decl-zfir0120top-96-gt_z0151}
```abap
DATA:
GT_Z0151 LIKE ZFIT0151 OCCURS 0 WITH HEADER LINE.
```
#### GT_Z0150_S — data · L97-L97 {#decl-zfir0120top-97-gt_z0150_s}
```abap
DATA:
GT_Z0150_S LIKE ZFIT0150 OCCURS 0 WITH HEADER LINE.
```
#### GT_Z0151_S — data · L98-L98 {#decl-zfir0120top-98-gt_z0151_s}
```abap
DATA:
GT_Z0151_S LIKE ZFIT0151 OCCURS 0 WITH HEADER LINE.
```
#### GT_BKPF — data · L99-L99 {#decl-zfir0120top-99-gt_bkpf}
```abap
DATA:
GT_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE.
```
#### GT_BSEG — data · L100-L100 {#decl-zfir0120top-100-gt_bseg}
```abap
DATA:
GT_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE.
```
#### GT_AMT_G — data · L103-L107 {#decl-zfir0120top-103-gt_amt_g}
```abap
DATA: BEGIN OF GT_AMT_G OCCURS 0,
HKONT LIKE BSEG-HKONT,
KOSTL LIKE BSEG-KOSTL,
DMBTR LIKE BSEG-DMBTR,
END OF GT_AMT_G.
```
#### GT_LFA1 — data · L110-L114 {#decl-zfir0120top-110-gt_lfa1}
```abap
DATA: BEGIN OF GT_LFA1 OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
STCD2 LIKE LFA1-STCD2,
NAME1 LIKE LFA1-NAME1,
END OF GT_LFA1.
```
#### GT_CSKT — data · L117-L120 {#decl-zfir0120top-117-gt_cskt}
```abap
DATA: BEGIN OF GT_CSKT OCCURS 0,
KOSTL LIKE CSKT-KOSTL,
LTEXT LIKE CSKT-LTEXT,
END OF GT_CSKT.
```
#### GT_DOMAIN — data · L123-L127 {#decl-zfir0120top-123-gt_domain}
```abap
DATA: BEGIN OF GT_DOMAIN OCCURS 0,
DOMNAME LIKE DD07T-DOMNAME,
DOMVALUE_L LIKE DD07T-DOMVALUE_L,
DDTEXT LIKE DD07T-DDTEXT,
END OF GT_DOMAIN.
```
#### GV_MONTH — data · L129-L129 {#decl-zfir0120top-129-gv_month}
```abap
DATA: GV_MONTH(2) TYPE N.
```
#### GV_HIDE — data · L130-L130 {#decl-zfir0120top-130-gv_hide}
```abap
DATA:
GV_HIDE(1) TYPE C. " 포스팅 가능 여부
```
#### R_BUDAT — ranges · L132-L132 {#decl-zfir0120top-132-r_budat}
```abap
RANGES: R_BUDAT FOR BKPF-BUDAT.
```
#### GT_FCAT_ITEM2 — data · L135-L135 {#decl-zfir0120top-135-gt_fcat_item2}
```abap
DATA : GT_FCAT_ITEM2 TYPE LVC_T_FCAT.
```
#### GS_STABLE — data · L137-L137 {#decl-zfir0120top-137-gs_stable}
```abap
DATA : GS_STABLE TYPE LVC_S_STBL.
```
#### GC_SPLITTER — data · L138-L138 {#decl-zfir0120top-138-gc_splitter}
```abap
DATA:
GC_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER.
```
#### GC_CONTAINER1 — data · L139-L139 {#decl-zfir0120top-139-gc_container1}
```abap
DATA:
GC_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER.
```
#### GC_CONTAINER2 — data · L140-L140 {#decl-zfir0120top-140-gc_container2}
```abap
DATA:
GC_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER.
```
#### GV_ALV_GRID — data · L141-L141 {#decl-zfir0120top-141-gv_alv_grid}
```abap
DATA:
GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID.
```
#### GV_ALV_GRID1 — data · L142-L142 {#decl-zfir0120top-142-gv_alv_grid1}
```abap
DATA:
GV_ALV_GRID1 TYPE REF TO CL_GUI_ALV_GRID.
```
#### GV_ALV_GRID2 — data · L143-L143 {#decl-zfir0120top-143-gv_alv_grid2}
```abap
DATA:
GV_ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID.
```
#### GV_LAYO — data · L144-L144 {#decl-zfir0120top-144-gv_layo}
```abap
DATA:
GV_LAYO TYPE LVC_S_LAYO.
```
#### GV_LAYO1 — data · L145-L145 {#decl-zfir0120top-145-gv_layo1}
```abap
DATA:
GV_LAYO1 TYPE LVC_S_LAYO.
```
#### GV_LAYO2 — data · L146-L146 {#decl-zfir0120top-146-gv_layo2}
```abap
DATA:
GV_LAYO2 TYPE LVC_S_LAYO.
```
#### GV_VARI — data · L147-L147 {#decl-zfir0120top-147-gv_vari}
```abap
DATA:
GV_VARI TYPE DISVARIANT.
```
#### GV_VARI1 — data · L148-L148 {#decl-zfir0120top-148-gv_vari1}
```abap
DATA:
GV_VARI1 TYPE DISVARIANT.
```
#### GV_VARI2 — data · L149-L149 {#decl-zfir0120top-149-gv_vari2}
```abap
DATA:
GV_VARI2 TYPE DISVARIANT.
```
#### C_BLART — constants · L154-L154 {#decl-zfir0120top-154-c_blart}
```abap
CONSTANTS: C_BLART LIKE BKPF-BLART VALUE 'KZ'. "공급업체 지급
```
#### P_BUKRS — parameter · L161-L161 {#decl-zfir0120top-161-p_bukrs}
```abap
PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY.
```
#### P_SPMON — parameter · L162-L162 {#decl-zfir0120top-162-p_spmon}
```abap
PARAMETERS:
P_SPMON LIKE S001-SPMON OBLIGATORY.
```
#### P_COMP — parameter · L163-L163 {#decl-zfir0120top-163-p_comp}
```abap
PARAMETERS:
P_COMP LIKE ZUNICT1000-COMP OBLIGATORY.
```
#### P_RA — parameter · L169-L169 {#decl-zfir0120top-169-p_ra}
```abap
PARAMETERS : P_RA RADIOBUTTON GROUP G1. "전체
```
#### P_RB — parameter · L171-L171 {#decl-zfir0120top-171-p_rb}
```abap
PARAMETERS : P_RB RADIOBUTTON GROUP G1. "차이자료
```
#### P_RC — parameter · L180-L180 {#decl-zfir0120top-180-p_rc}
```abap
PARAMETERS : P_RC RADIOBUTTON GROUP G2. "전표생성
```
#### P_RD — parameter · L182-L182 {#decl-zfir0120top-182-p_rd}
```abap
PARAMETERS : P_RD RADIOBUTTON GROUP G2. "이력조회
```
#### P_BUDAT — parameter · L189-L189 {#decl-zfir0120top-189-p_budat}
```abap
PARAMETERS: P_BUDAT LIKE BKPF-BUDAT OBLIGATORY.
```
### `ZFIR0120F01` (5건)
#### LT_DOCU — data · unit 로컬 · L149-L152 {#decl-zfir0120f01-149-lt_docu}
```abap
DATA: BEGIN OF LT_DOCU OCCURS 0,
AUGBL LIKE BSEG-AUGBL,
AUGDT LIKE BSEG-AUGDT,
END OF LT_DOCU.
```
#### LT_Z1001 — data · unit 로컬 · L285-L285 {#decl-zfir0120f01-285-lt_z1001}
```abap
DATA: LT_Z1001 LIKE ZUNICT1001 OCCURS 0 WITH HEADER LINE.
```
#### LT_Z1003 — data · unit 로컬 · L287-L287 {#decl-zfir0120f01-287-lt_z1003}
```abap
DATA:
LT_Z1003 LIKE ZUNICT1003 OCCURS 0 WITH HEADER LINE.
```
#### LV_CNT — data · unit 로컬 · L1270-L1270 {#decl-zfir0120f01-1270-lv_cnt}
```abap
DATA: LV_CNT(3) TYPE N.
```
#### LV_LAST — data · unit 로컬 · L1271-L1271 {#decl-zfir0120f01-1271-lv_last}
```abap
DATA:
LV_LAST(1) TYPE C.
```
## Unit 목록 (컨테이너)
| unit | 유형 | 위치 | 조각 | 한 줄 요약 |
|---|---|---|---|---|
| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | |
| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | |
| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | |
| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | |
| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | |
| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | |
| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | |
| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | |
| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | |
| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | |
| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | |
| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | |
| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | |
| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | |
| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | |
| USE_FORM | FORM | ZFIALV L538-550 | 0 | |
| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | |
| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | |
| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | |
| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | |
| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | |
| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | |
| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | |
| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | |
| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | |
| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | |
| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | |
| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. |
| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. |
| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. |
| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. |
| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. |
| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. |
| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. |
| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. |
| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. |
| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. |
| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. |
| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | |
| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. |
| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | |
| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | |
| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. |
| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). |
| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | |
| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. |
| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. |
| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. |
| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. |
| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. |
| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. |
| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. |
| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. |
| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | |
| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | |
| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. |
| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. |
| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. |
| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. |
| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. |
| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. |
| INITIALIZATION | EVENT | ZFIR0120 L32-54 | 1 | INITIALIZATION 에서 ALV 설정을 준비하고 정산월(전월)·카드사(롯데카드 210)·전기일(당일) 기본값을 설정한다. |
| START-OF-SELECTION | EVENT | ZFIR0120 L55-63 | 1 | START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다. |
| END-OF-SELECTION | EVENT | ZFIR0120 L64-70 | 1 | END-OF-SELECTION 에서 조회 결과 GT_HEAD 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다. |
| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0120CLS L33-35 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. |
| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK2 | METHOD | ZFIR0120CLS L37-39 | 0 | 두 번째 ALV 그리드의 핫스팟 클릭 이벤트를 HOTSPOT_CLICK2 서브루틴으로 위임하는 이벤트 핸들러다. |
| LCL_EVENT_RECEIVER_GRID~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0120CLS L41-43 | 0 | ALV 그리드 더블클릭 이벤트를 받아 DOUBLE_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. |
| GET_DATA | FORM | ZFIR0120F01 L9-49 | 2 | 정산월(P_SPMON)로 조회기간 범위를 만들고 전표 생성 모드면 이력·승인·매입·청구·전표 아이템을 읽어 대조 데이터를, 이력조회 모드면 저장 이력을 읽어 표시 데이터를 만든다. |
| GET_ZUNICT1001 | FORM | ZFIR0120F01 L55-83 | 1 | 법인카드 승인내역과 카드 마스터, 관련 전표 헤더를 조회한다. |
| GET_ZUNICT1002 | FORM | ZFIR0120F01 L89-117 | 1 | 회사코드·카드사·정산월 조건으로 법인카드 매입내역(ZUNICT1002)을 읽고 카드 마스터(ZUNICT1000)와 기표 전표 헤더(BKPF)를 추가 조회한다. |
| GET_ZUNICT1003 | FORM | ZFIR0120F01 L123-142 | 1 | 회사코드·카드사·정산월 조건으로 법인카드 청구내역(ZUNICT1003)을 읽고 해당 카드의 카드 마스터(ZUNICT1000)를 추가 조회한다. |
| GET_ZFIT0150 | FORM | ZFIR0120F01 L148-226 | 2 | 정산 이력 테이블 ZFIT0150/ZFIT0151 에서 해당 월의 기존 저장내역과 관련 전표 헤더를 읽고, 전표 생성 모드에서 역분개되지 않은 반제전표가 이미 있으면 중복 처리를 막는다. |
| GET_BSEG | FORM | ZFIR0120F01 L232-278 | 2 | 카드 마스터를 중복 제거한 뒤 카드사 공급업체(LFA1)·회사코드(T001)·관리회계영역(TKA02)·코스트센터 텍스트(CSKT)를 읽고, 전표 헤더 기준으로 전표 아이템(BSEG)을 조회한다. |
| DISPLAY_DATA | FORM | ZFIR0120F01 L284-744 | 8 | 카드 매입내역(ZUNICT1002)을 기준으로 승인·청구 내역과 기표 전표(BKPF/BSEG)를 대조해 처리금액·대상금액·청구·할인·차액·미청구액을 계산하고 아이템(GT_ITEM)과 카드별 헤더(GT_HEAD)를 만든다(1/2 창). |
| DISPLAY_DATA_2 | FORM | ZFIR0120F01 L750-771 | 1 | 정산 이력 조회 모드에서 저장된 헤더(ZFIT0150)와 상세(ZFIT0151) 이력을 GT_HEAD/GT_ITEM 으로 옮기고 반제전표 유무에 따라 신호등 아이콘을 설정한다. |
| SPLITTER_CONTAINER | FORM | ZFIR0120F01 L777-829 | 0 | 화면 0100 의 커스텀 컨테이너에 2행 스플리터를 만들어 헤더/상세 ALV 그리드 객체 두 개를 생성하는 컨트롤 플러밍 FORM 이다. |
| CREATE_AND_INIT_CONTROLS_CON | FORM | ZFIR0120F01 L838-865 | 0 | 두 ALV 그리드에 핫스팟·더블클릭 이벤트 핸들러를 등록하고 레이아웃·툴바 제외·필드카탈로그를 설정해 그리드를 표시하는 ALV 초기화 플러밍 FORM 이다. |
| SET_GRID_LAYOUT1 | FORM | ZFIR0120F01 L874-889 | 0 | 헤더/상세 두 ALV 그리드의 레이아웃(제목, 열 최적화, 선택모드, 줄무늬)을 설정하는 ALV 플러밍 FORM 이다. |
| ALV_GRID_DISPLAY1 | FORM | ZFIR0120F01 L898-913 | 1 | 헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 임시전표 헤더 목록(GT_HEAD)을 상단 ALV에 표시하는 FORM이다. |
| SET_FIELD_CATALOGS1 | FORM | ZFIR0120F01 L922-1032 | 0 | 헤더 ALV(GT_HEAD)의 필드카탈로그를 생성하고 상태 아이콘·카드번호·금액·코스트센터·반제전표(핫스팟)·오류메시지 컬럼 속성을 설정하는 ALV 플러밍 FORM 이다. |
| ALV_GRID_DISPLAY2 | FORM | ZFIR0120F01 L1041-1056 | 1 | 아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 선택 전표의 아이템 목록(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다. |
| SET_FIELD_CATALOGS2 | FORM | ZFIR0120F01 L1065-1169 | 0 | 아이템 ALV(GT_ITEM)의 필드카탈로그를 생성하고 카드번호·사용자·공급업체·승인/매입번호·전표번호(핫스팟)·금액 컬럼의 텍스트·정렬·통화 속성을 설정하는 ALV 플러밍 FORM 이다. |
| HOTSPOT_CLICK | FORM | ZFIR0120F01 L1179-1210 | 2 | 헤더 ALV 핫스팟 클릭 시 카드번호(CARDNO)면 해당 카드의 상세 아이템을 GT_ITEM2 로 추려 상세 그리드를 갱신하고, 반제전표(AUGBL)면 FB03 으로 전표를 조회한다. |
| HOTSPOT_CLICK2 | FORM | ZFIR0120F01 L1219-1235 | 1 | 상세 ALV 에서 전표번호(BELNR) 핫스팟 클릭 시 파라미터 ID 를 설정하고 FB03 으로 회계전표를 조회한다. |
| DOUBLE_CLICK | FORM | ZFIR0120F01 L1244-1263 | 1 | 헤더 ALV 더블클릭 시 해당 회사코드·카드번호의 상세 아이템(GT_ITEM)을 GT_ITEM2 로 추려 상세 그리드 갱신용 OK 코드 ZUSER 를 발생시킨다. |
| DOCUMENT_POSTING | FORM | ZFIR0120F01 L1269-1375 | 3 | 카드별 청구 정산 내역으로 반제/미결 전표 데이터를 만들고 카드 300건 단위로 전표를 생성한 뒤 정산 이력을 저장한다. |
| MAKE_BSELK | FORM | ZFIR0120F01 L1381-1391 | 1 | FB05 반제 전기를 위한 반제 계정 선택 헤더(BSELK)에 공급업체(LIFNR)·회사코드·계정유형 K·특별G/L 제외 지시자를 채운다. |
| MAKE_BKPF | FORM | ZFIR0120F01 L1397-1410 | 1 | FB05 반제 전기용 전표 헤더(BBKPF)를 전표유형 KZ, 전기일, 회사코드, 현지통화, 반제 트랜잭션 UMBUCHNG(대체전기)로 구성한다. |
| MAKE_BSEG | FORM | ZFIR0120F01 L1416-1435 | 1 | 코스트센터별 청구할인 금액(GT_AMT_G)을 G/L 계정 라인(BBSEG)으로 만들어 금액 부호에 따라 전기키 50/40 과 반대전기 지시자를 설정한다. |
| BDC_FB05 | FORM | ZFIR0120F01 L1441-1525 | 2 | 구성한 반제 데이터로 전표를 전기하고 결과를 화면 테이블·정산 이력에 반영한다. |
| USER_COMMAND_0100 INPUT | MODULE | ZFIR0120I01 L9-17 | 1 | 화면 0100 PAI 에서 POST 기능코드일 때 DOCUMENT_POSTING 을 호출해 전표를 생성하는 사용자 명령 MODULE 이다. |
| STATUS_0100 OUTPUT | MODULE | ZFIR0120O01 L10-20 | 0 | |
| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0120O01 L26-49 | 0 | |