Files
ABAP-Indexing/wiki/programs/ZFIR0090.md
T

4130 lines
142 KiB
Markdown

---
type: abap-program
title: "ZFIR0090 — 전자결재 승인 자동기표 (출장비/교통비)"
description: "전자결재 시스템에서 승인된 출장비·교통비 경비 건(CBO 테이블 ZFIT0140, ZIFT0010)을 읽어 회계전표를 자동 기표하는 프로그램이다. BKPF/BSEG 와 자산·고객·공급업체·자재 텍스트를 붙여 헤더/아이템 2단 ALV 로 보여주고, BSEG_PROCESS(298줄)에서 전표 아이템을 구성해 전기한다. 회사코드 권한 외에 프로그램 실행 권한(AUTHORITY_PG)도 별도로 검증한다."
resource: "abap://ZFIR0090"
tags: ["전자결재", "경비처리", "전표", "자동기표", "승인관리", "FI", "전표헤더", "전표아이템", "전표번호", "회계연도", "기준데이터", "입력자", "전표유형", "코스트센터", "사업장", "전기키", "고객명", "구매처명", "계정명", "텍스트보강"]
generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:21+00:00" }
status: stable
x-package:
x-changed-on:
x-tables-read: ["ANLA", "BKPF", "BSEG", "CSKT", "J_1BBRANCH", "KNA1", "LFA1", "LTDX", "MAKT", "SKAT", "T001", "T003T", "T007S", "T052U", "TBSLT", "TKA02", "USR01", "V_USERNAME", "ZFIT0040", "ZFIT0140", "ZFIT0160", "ZIFT0010"]
x-tables-write: ["ZIFT0010"]
x-calls: ["AS03", "BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CALL_BROWSER", "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", "FD03", "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", "MM03", "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"]
x-code-hash: "c444a65ca757dae15c6d5925d1ff5ba93bc48b268e24850982759ce45d7642c4"
x-unit-count: 106
x-chunk-count: 43
x-declaration-count: 316
---
## 업무 목적
전자결재 시스템에서 승인된 출장비·교통비 경비 건(CBO 테이블 ZFIT0140, ZIFT0010)을 읽어 회계전표를 자동 기표하는 프로그램이다. BKPF/BSEG 와 자산·고객·공급업체·자재 텍스트를 붙여 헤더/아이템 2단 ALV 로 보여주고, BSEG_PROCESS(298줄)에서 전표 아이템을 구성해 전기한다. 회사코드 권한 외에 프로그램 실행 권한(AUTHORITY_PG)도 별도로 검증한다.
## 주 흐름
1. ALV 설정을 준비한다 (ALV_SETTING)
2. 회사코드 권한과 프로그램 실행 권한을 각각 검증한다 (AUTHORITY_BUKRS → AUTHORITY_PG)
3. 전자결재 승인된 경비 내역을 추출한다 (GET_DATA)
4. 결재상신 중인 문서를 별도로 조회한다 (DISPLAY_PROCESSING_DATA)
5. 스플리터 컨테이너에 헤더/아이템 2단 ALV 를 띄운다 (SPLITTER_CONTAINER)
6. 전표 아이템을 구성해 전기하고 결과를 ZIFT0010 에 기록한다 (BSEG_PROCESS)
## 핵심 내부테이블
- `GT_HEAD` — 승인 경비 문서 헤더 (채움: GET_DATA / 소비: SET_FIELD_CATALOGS1)
- `GT_ITEM` — 생성할 전표 아이템 (채움: BSEG_PROCESS / 소비: SET_FIELD_CATALOGS2)
## 테이블 / 외부 호출
- read: ANLA, BKPF, BSEG, CSKT, J_1BBRANCH, KNA1, LFA1, LTDX, MAKT, SKAT, T001, T003T, T007S, T052U, TBSLT, TKA02, USR01, V_USERNAME, ZFIT0040, ZFIT0140, ZFIT0160, ZIFT0010
- write: ZIFT0010
- 외부 호출: AS03, BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CALL_BROWSER, 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, FD03, 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, MM03, NUMBER_GET_NEXT, NUMERIC_CHECK
## 로직 조각 (43건 / unit 36개)
LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다.
테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.
### 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-zfir0090top-198-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x)
- 위치: `abap://ZFIR0090/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0090#ZFICOM#FORM#AUTHORITY_BUKRS#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://ZFIR0090/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#AUTHORITY_PG#C1`
### FORM GET_DATA — `ZFIR0090F01` L9-L80 (72줄)
*출장비/교통비 구분·회사코드·공급업체(사원)·기안일·전기일 조건으로 전자결재 승인 경비 내역 ZFIT0140을 읽고 공급업체명·사업영역별 코스트센터(ZFIT0040)·코스트센터명을 붙여 GT_HEAD에 COLLECT 집계하는 FORM이다.*
> 이 unit 의 조각 2개가 60/72줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 라디오버튼으로 경비 구분(1 출장비/2 교통비)을 정하고 회사코드(T001)와 공급업체명(LFA1)을 읽은 뒤 회사코드·공급업체·기안일·전기일·구분 조건으로 승인 경비 내역 ZFIT0140을 조회한다.
```abap
16| IF P_RA = 'X'.
17| L_GUBUN = '1'.
18| ELSEIF P_RB = 'X'.
19| L_GUBUN = '2'.
20| ENDIF.
21|
22|
23| SELECT SINGLE * FROM T001
24| WHERE BUKRS = P_BUKRS.
25|
26|
27| SELECT SINGLE NAME1 INTO G_NAME1
28| FROM LFA1
29| WHERE LIFNR = P_LIFNR.
30|
31|
32| SELECT *
33| INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT0140
34| FROM ZFIT0140
35| WHERE BUKRS = P_BUKRS
36| AND LIFNR = P_LIFNR
37| AND DRAFT_DATE IN S_DRAFT
38| AND BUDAT IN S_BUDAT
39| AND GUBUN = L_GUBUN.
```
- **EN**: Derives the expense category (travel or transportation) from radio buttons, reads company code and vendor name, and selects approved expense records from ZFIT0140 by company code, vendor, draft date, posting date and category.
- 테이블(파서): read [T001](/tables/T001.md), [LFA1](/tables/LFA1.md), [ZFIT0140](/tables/ZFIT0140.md) / write -
- SAP 객체: ZFIT0140, T001, LFA1
- 업무 키워드: 승인 경비 조회, 출장비, 교통비, 기안일, 공급업체명
- English: Expense Document, Travel Expense, Vendor Master, CBO Table, Select-Options
- 정의부(복사 시 함께 필요): [`P_RA`](#decl-zfir0090top-209-p_ra), [`L_GUBUN`](#decl-zfir0090f01-12-l_gubun), [`P_RB`](#decl-zfir0090top-211-p_rb), [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs), [`G_NAME1`](#decl-zfir0090top-168-g_name1), [`LFA1`](#decl-zficom-36-lfa1), [`P_LIFNR`](#decl-zfir0090top-199-p_lifnr), [`IT_ZFIT0140`](#decl-zfir0090top-19-it_zfit0140), [`S_DRAFT`](#decl-zfir0090top-202-s_draft), [`S_BUDAT`](#decl-zfir0090top-203-s_budat)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L16-L39` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#GET_DATA#C1`
#### [aggregation] 경비 건마다 대변(SHKZG C) 금액은 0으로 두고 구분명(출장비/교통비)·공급업체명(LFA1)·사업영역별 코스트센터(ZFIT0040)·코스트센터명(CSKT, KR01)을 붙여 GT_HEAD에 COLLECT로 금액을 집계한다.
```abap
42| LOOP AT IT_ZFIT0140.
43|
44| IF IT_ZFIT0140-SHKZG = 'C'.
45| CLEAR: IT_ZFIT0140-AMT.
46| ENDIF.
47|
48| MOVE-CORRESPONDING IT_ZFIT0140 TO GT_HEAD.
49|
50| IF GT_HEAD-GUBUN = '1'.
51| GT_HEAD-GUBUN_N = '출장비'.
52| ELSEIF GT_HEAD-GUBUN = '2'.
53| GT_HEAD-GUBUN_N = '교통비'.
54| ENDIF.
55|
56|
57| SELECT SINGLE NAME1 INTO GT_HEAD-NAME1
58| FROM LFA1
59| WHERE LIFNR = GT_HEAD-LIFNR.
60|
61|
62| SELECT SINGLE KOSTL INTO GT_HEAD-KOSTL
63| FROM ZFIT0040
64| WHERE BUKRS = GT_HEAD-BUKRS
65| AND GSBER2 = GT_HEAD-GSBER2.
66|
67| SELECT SINGLE KTEXT INTO GT_HEAD-TEXT1
68| FROM CSKT
69| WHERE SPRAS = SY-LANGU
70| AND KOKRS = 'KR01'
71| AND KOSTL = GT_HEAD-KOSTL
72| AND DATBI >= SY-DATUM.
73|
74| COLLECT GT_HEAD.
75| CLEAR GT_HEAD.
76|
77| ENDLOOP.
```
- **EN**: For each expense record, zeroes credit-side amounts, adds category text, vendor name, business-area cost center mapping (ZFIT0040) and cost center text (CSKT), then aggregates into GT_HEAD with COLLECT.
- 테이블(파서): read [LFA1](/tables/LFA1.md), [ZFIT0040](/tables/ZFIT0040.md), [CSKT](/tables/CSKT.md) / write -
- SAP 객체: LFA1, ZFIT0040, CSKT
- 업무 키워드: 경비 집계, 코스트센터 매핑, 사업영역, 코스트센터명, COLLECT
- English: Aggregation, Cost Center Mapping, Business Area, Cost Center Text, COLLECT
- 정의부(복사 시 함께 필요): [`IT_ZFIT0140`](#decl-zfir0090top-19-it_zfit0140), [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`LFA1`](#decl-zficom-36-lfa1)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L42-L77` · confidence 0.85 · `ZFIR0090#ZFIR0090F01#FORM#GET_DATA#C2`
### 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://ZFIR0090/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0090#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-zfir0090top-198-p_bukrs)
- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0090/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#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://ZFIR0090/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0090#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_LIFNR`](#decl-zfir0090top-199-p_lifnr), [`P_BUKRS`](#decl-zfir0090top-198-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://ZFIR0090/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0090#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-zfir0090top-198-p_bukrs)
- 위치: `abap://ZFIR0090/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0090#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://ZFIR0090/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#STATUS_BAR#C1`
### FORM HOTSPOT_CLICK — `ZFIR0090F01` L490-L511 (22줄)
*헤더 ALV 핫스팟 클릭 시 선택 문서에 대해 BSEG_PROCESS로 전표 아이템을 구성하고 정렬한 뒤 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다.*
> 이 unit 의 조각 1개가 17/22줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [control_flow] 클릭한 헤더 행을 읽어 전표번호 컬럼이면 BSEG_PROCESS로 해당 경비 문서의 전표 아이템(GT_ITEM2)을 만들어 전표번호·항목 순으로 정렬하고 CL_GUI_CFW=>SET_NEW_OK_CODE로 화면 재표시를 유도한다.
```abap
493| READ TABLE GT_HEAD INDEX P_ROW_ID-INDEX.
494| CHECK SY-SUBRC EQ 0.
495|
496| CASE P_COLUMN_ID.
497| * 전표번호
498| WHEN 'BELNR'.
499|
500| PERFORM BSEG_PROCESS.
501|
502| SORT GT_ITEM2 BY BELNR BUZEI.
503| * PAI로 호출
504| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE
505| EXPORTING
506| NEW_CODE = 'ZUSER'.
507|
508|
509| ENDCASE.
```
- **EN**: On document-number hotspot, builds the line items for the selected expense document via BSEG_PROCESS, sorts them and triggers PAI with OK-code ZUSER to refresh the item grid.
- 호출(파서): BSEG_PROCESS, CL_GUI_CFW=>SET_NEW_OK_CODE
- SAP 객체: CL_GUI_CFW
- 업무 키워드: 핫스팟 클릭, 전표 아이템 구성, 화면 갱신
- English: Hotspot Click, Line Item, SET_NEW_OK_CODE
- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`GT_ITEM`](#decl-zfir0090top-47-gt_item), [`GT_ITEM2`](#decl-zfir0090top-100-gt_item2)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L493-L509` · confidence 0.8 · `ZFIR0090#ZFIR0090F01#FORM#HOTSPOT_CLICK#C1`
### FORM BSEG_PROCESS — `ZFIR0090F01` L701-L998 (298줄)
*선택한 결재 건의 전표 헤더·아이템을 읽고 표시용 조직단위·거래처·계정 텍스트를 붙인다.*
> 이 unit 의 조각 2개가 98/298줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [sql_select] 선택한 결재 건의 회사코드·회계연도·전표번호로 전표 헤더(BKPF)와 아이템(BSEG)을 읽어온다 — 이후 아이템 구성과 화면 표시의 기준 데이터다.
```abap
710| SELECT * INTO TABLE GT_BKPF
711| FROM BKPF
712| WHERE BUKRS EQ GT_HEAD-BUKRS
713| AND GJAHR EQ GT_HEAD-GJAHR
714| AND BELNR EQ GT_HEAD-BELNR.
715|
716|
717| SELECT * INTO TABLE GT_BSEG
718| FROM BSEG
719| WHERE BUKRS EQ GT_HEAD-BUKRS
720| AND GJAHR EQ GT_HEAD-GJAHR
721| AND BELNR EQ GT_HEAD-BELNR.
```
- **EN**: Reads the document header (BKPF) and items (BSEG) for the selected approval record by company code, fiscal year and document number.
- 테이블(파서): read [BKPF](/tables/BKPF.md), [BSEG](/tables/BSEG.md) / write -
- SAP 객체: BKPF, BSEG, BELNR, GJAHR, BUKRS
- 업무 키워드: 전표헤더, 전표아이템, 전표번호, 회계연도, 기준데이터
- English: document header, line items, document number, fiscal year, BKPF, BSEG
- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0090top-15-gt_bkpf), [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0090top-16-gt_bseg)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L710-L721` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#BSEG_PROCESS#C1`
#### [sql_select] 표시용 텍스트를 일괄 조회한다 — 입력자명(V_USERNAME)·전표유형명(T003T)·코스트센터명(CSKT, 관리회계영역 TKA02 기준)·사업장명(J_1BBRANCH)·전기키명(TBSLT)·고객명(KNA1)·구매처명(LFA1)·G/L 계정명(SKAT, HKONT 와 SAKNR 두 필드로 두 번 읽고 중복 제거).
```abap
726| CLEAR : GT_UNAME[], GT_UNAME.
727| SELECT BNAME
728| NAME_TEXT AS NAMET
729| INTO TABLE GT_UNAME
730| FROM V_USERNAME
731| FOR ALL ENTRIES IN GT_BKPF
732| WHERE BNAME EQ GT_BKPF-USNAM.
733|
734| * 전표유형명
735| CLEAR : GT_T003T[], GT_T003T.
736| SELECT BLART LTEXT
737| INTO TABLE GT_T003T
738| FROM T003T
739| FOR ALL ENTRIES IN GT_BKPF
740| WHERE SPRAS EQ SY-LANGU
741| AND BLART EQ GT_BKPF-BLART.
742|
743| * 코스트센터명
744| CLEAR : GT_CSKT[], GT_CSKT, TKA02.
745| SELECT SINGLE *
746| FROM TKA02
747| WHERE BUKRS EQ P_BUKRS.
748|
749| SELECT KOSTL KTEXT
750| INTO TABLE GT_CSKT
751| FROM CSKT
752| FOR ALL ENTRIES IN GT_BSEG
753| WHERE SPRAS EQ SY-LANGU
754| AND KOKRS EQ TKA02-KOKRS
755| AND KOSTL EQ GT_BSEG-KOSTL.
756|
757| * 사업장명
758| CLEAR : GT_BRANCH[], GT_BRANCH.
759| SELECT BRANCH NAME
760| INTO TABLE GT_BRANCH
761| FROM J_1BBRANCH
762| FOR ALL ENTRIES IN GT_BSEG
763| WHERE BUKRS EQ P_BUKRS
764| AND BRANCH EQ GT_BSEG-BUPLA.
765|
766| * 전기키명
767| CLEAR : GT_TBSLT[], GT_TBSLT.
768| SELECT BSCHL UMSKZ LTEXT
769| INTO TABLE GT_TBSLT
770| FROM TBSLT
771| FOR ALL ENTRIES IN GT_BSEG
772| WHERE SPRAS EQ SY-LANGU
773| AND BSCHL EQ GT_BSEG-BSCHL
774| AND UMSKZ EQ GT_BSEG-UMSKZ.
775|
776| * 고객명
777| CLEAR : GT_KNA1[], GT_KNA1.
778| SELECT KUNNR NAME1
779| INTO TABLE GT_KNA1
780| FROM KNA1
781| FOR ALL ENTRIES IN GT_BSEG
782| WHERE KUNNR EQ GT_BSEG-KUNNR.
783|
784| * 구매처명
785| CLEAR : GT_LFA1[], GT_LFA1.
786| SELECT LIFNR NAME1
787| INTO TABLE GT_LFA1
788| FROM LFA1
789| FOR ALL ENTRIES IN GT_BSEG
790| WHERE LIFNR EQ GT_BSEG-LIFNR.
791|
792| * G/L 계정명
793| CLEAR : GT_SKAT[], GT_SKAT.
794| SELECT SAKNR TXT50
795| INTO TABLE GT_SKAT
796| FROM SKAT
797| FOR ALL ENTRIES IN GT_BSEG
798| WHERE KTOPL EQ T001-KTOPL
799| AND SPRAS EQ SY-LANGU
800| AND SAKNR EQ GT_BSEG-HKONT.
801|
802| SELECT SAKNR TXT50
803| APPENDING TABLE GT_SKAT
804| FROM SKAT
805| FOR ALL ENTRIES IN GT_BSEG
806| WHERE KTOPL EQ T001-KTOPL
807| AND SPRAS EQ SY-LANGU
808| AND SAKNR EQ GT_BSEG-SAKNR.
809| SORT GT_SKAT BY SAKNR.
810| DELETE ADJACENT DUPLICATES FROM GT_SKAT COMPARING SAKNR.
811|
```
- **EN**: Bulk-loads display texts: user, document type, cost center, business place, posting key, customer, vendor and G/L account (both HKONT and SAKNR, deduplicated).
- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md), [T003T](/tables/T003T.md), [TKA02](/tables/TKA02.md), [CSKT](/tables/CSKT.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [TBSLT](/tables/TBSLT.md), [KNA1](/tables/KNA1.md), [LFA1](/tables/LFA1.md), [SKAT](/tables/SKAT.md) / write -
- SAP 객체: V_USERNAME, T003T, TKA02, CSKT, J_1BBRANCH, TBSLT, KNA1, LFA1, SKAT
- 업무 키워드: 입력자, 전표유형, 코스트센터, 사업장, 전기키, 고객명, 구매처명, 계정명, 텍스트보강
- English: user name, document type, cost center, business place, posting key, customer, vendor, G/L account text
- 정의부(복사 시 함께 필요): [`GT_UNAME`](#decl-zfir0090top-104-gt_uname), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0090top-15-gt_bkpf), [`GT_T003T`](#decl-zfir0090top-109-gt_t003t), [`GT_CSKT`](#decl-zfir0090top-114-gt_cskt), [`TKA02`](#decl-zfir0090top-9-tka02), [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0090top-16-gt_bseg), [`GT_BRANCH`](#decl-zfir0090top-119-gt_branch), [`GT_TBSLT`](#decl-zfir0090top-124-gt_tbslt), [`GT_KNA1`](#decl-zfir0090top-130-gt_kna1) 외 5건
- 선언을 못 찾은 이름: V_USERNAME, J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L726-L811` · confidence 0.87 · `ZFIR0090#ZFIR0090F01#FORM#BSEG_PROCESS#C2`
### FORM HOTSPOT_CLICK2 — `ZFIR0090F01` L520-L558 (39줄)
*아이템 ALV 핫스팟 클릭 시 전표번호는 FB03, 거래처는 계정유형(고객/공급업체/자산/자재)에 따라 FD03/FK03/AS03/MM03 조회 화면으로 이동하는 FORM이다.*
> 이 unit 의 조각 1개가 34/39줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [control_flow] 클릭한 컬럼이 BELNR이면 SET PARAMETER(BLN/BUK/GJR) 후 FB03 전표조회를, SUBAC이면 계정유형(KOART D/K/A/M)에 따라 FD03 고객·FK03 공급업체·AS03 자산·MM03 자재 조회 트랜잭션을 SKIP FIRST SCREEN으로 호출한다.
```abap
523| READ TABLE GT_ITEM2 INDEX P_ROW_ID-INDEX.
524| CHECK SY-SUBRC EQ 0.
525|
526| CASE P_COLUMN_ID.
527| * 전표번호
528| WHEN 'BELNR'.
529| CHECK GT_ITEM2-BELNR IS NOT INITIAL.
530| SET PARAMETER ID 'BLN' FIELD GT_ITEM2-BELNR.
531| SET PARAMETER ID 'BUK' FIELD P_BUKRS.
532| SET PARAMETER ID 'GJR' FIELD GT_ITEM2-GJAHR.
533| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
534| WHEN 'SUBAC'.
535| CHECK GT_ITEM2-SUBAC IS NOT INITIAL.
536| * 고객
537| IF GT_ITEM2-KOART EQ C_D.
538| SET PARAMETER ID 'KUN' FIELD GT_ITEM2-SUBAC.
539| SET PARAMETER ID 'BUK' FIELD P_BUKRS.
540| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN.
541| * 구매처
542| ELSEIF GT_ITEM2-KOART EQ C_K.
543| SET PARAMETER ID 'LIF' FIELD GT_ITEM2-SUBAC.
544| SET PARAMETER ID 'BUK' FIELD P_BUKRS.
545| CALL TRANSACTION 'FK03' AND SKIP FIRST SCREEN.
546| * 자산
547| ELSEIF GT_ITEM2-KOART EQ C_A.
548| SET PARAMETER ID 'AN1' FIELD GT_ITEM2-ANLN1.
549| SET PARAMETER ID 'BUK' FIELD P_BUKRS.
550| CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN.
551| * 자재
552| ELSEIF GT_ITEM2-KOART EQ C_M.
553| SET PARAMETER ID 'MAT' FIELD GT_ITEM2-MATNR.
554| CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
555| ENDIF.
556| ENDCASE.
```
- **EN**: Navigates from the item hotspot to FB03 (document display) or, by account type, to FD03 customer / FK03 vendor / AS03 asset / MM03 material display via SET PARAMETER and CALL TRANSACTION.
- 호출(파서): FB03, FD03, FK03, AS03, MM03
- SAP 객체: FB03, FD03, FK03, AS03, MM03
- 업무 키워드: 핫스팟 이동, 전표조회, 고객 조회, 공급업체 조회, 자산 조회, 자재 조회
- English: Hotspot Navigation, Document Display, Account Type KOART, CALL TRANSACTION
- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0090top-47-gt_item), [`GT_ITEM2`](#decl-zfir0090top-100-gt_item2), [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs), [`C_D`](#decl-zficom-211-c_d), [`C_K`](#decl-zficom-218-c_k), [`C_A`](#decl-zficom-208-c_a), [`C_M`](#decl-zficom-220-c_m)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L523-L556` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#HOTSPOT_CLICK2#C1`
### FORM DOUBLE_CLICK — `ZFIR0090F01` L567-L588 (22줄)
*헤더 ALV 더블클릭 시 해당 전표(BUKRS/GJAHR/BELNR)의 아이템을 GT_ITEM에서 골라 GT_ITEM2를 채우고 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다.*
> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [aggregation] 더블클릭한 헤더 행의 회사코드·연도·전표번호와 일치하는 아이템을 GT_ITEM에서 추려 GT_ITEM2에 담고 전표번호·항목 순으로 정렬한 뒤 CL_GUI_CFW=>SET_NEW_OK_CODE로 화면 재표시를 유도한다.
```abap
572| READ TABLE GT_HEAD INDEX P_ROW-INDEX.
573| CHECK SY-SUBRC EQ 0.
574|
575| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS
576| AND GJAHR EQ GT_HEAD-GJAHR
577| AND BELNR EQ GT_HEAD-BELNR.
578| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2.
579| APPEND GT_ITEM2. CLEAR GT_ITEM2.
580| ENDLOOP.
581|
582| SORT GT_ITEM2 BY BELNR BUZEI.
583| * PAI로 호출
584| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE
585| EXPORTING
586| NEW_CODE = 'ZUSER'.
```
- **EN**: Filters the line items of the double-clicked document header into GT_ITEM2, sorts by document and line number, and triggers PAI with OK-code ZUSER to refresh the item grid.
- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE
- SAP 객체: CL_GUI_CFW
- 업무 키워드: 더블클릭, 전표 아이템 필터, 헤더 아이템 연동, 화면 갱신
- English: Double Click, Line Item, Header-Item Link, SET_NEW_OK_CODE
- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`GT_ITEM`](#decl-zfir0090top-47-gt_item), [`GT_ITEM2`](#decl-zfir0090top-100-gt_item2)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L572-L586` · confidence 0.85 · `ZFIR0090#ZFIR0090F01#FORM#DOUBLE_CLICK#C1`
### FORM ALV_GRID_DISPLAY1 — `ZFIR0090F01` L211-L228 (18줄)
*헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 승인 경비 문서 헤더(GT_HEAD)를 상단 ALV에 표시하는 FORM이다.*
> 이 unit 의 조각 1개가 12/18줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [output] 레이아웃·변형·툴바 제외 목록과 함께 SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전자결재 승인 경비 헤더 GT_HEAD를 상단 ALV 그리드에 출력한다.
```abap
216| GV_VARI1-REPORT = SY-REPID.
217| CALL METHOD GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
218| EXPORTING
219| I_STRUCTURE_NAME = 'GT_HEAD'
220| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
221| IS_LAYOUT = GV_LAYO1
222| IS_VARIANT = GV_VARI1
223| I_BUFFER_ACTIVE = C_X
224| I_SAVE = C_A
225| CHANGING
226| IT_OUTTAB = GT_HEAD[]
227| IT_FIELDCATALOG = GT_FCAT_HEAD[].
```
- **EN**: Displays the approved expense document headers (GT_HEAD) in the upper ALV grid via SET_TABLE_FOR_FIRST_DISPLAY.
- 호출(파서): GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
- SAP 객체: CL_GUI_ALV_GRID
- 업무 키워드: 헤더 ALV 출력, 승인 경비 문서
- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Expense Document
- 정의부(복사 시 함께 필요): [`GV_VARI1`](#decl-zfir0090top-184-gv_vari1), [`GV_ALV_GRID1`](#decl-zfir0090top-178-gv_alv_grid1), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO1`](#decl-zfir0090top-181-gv_layo1), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L216-L227` · confidence 0.8 · `ZFIR0090#ZFIR0090F01#FORM#ALV_GRID_DISPLAY1#C1`
### FORM ALV_GRID_DISPLAY2 — `ZFIR0090F01` L335-L354 (20줄)
*아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 생성할 전표 아이템(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다.*
> 이 unit 의 조각 1개가 12/20줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [output] 레이아웃·변형·툴바 제외 목록과 함께 SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전표 아이템 내부테이블 GT_ITEM2를 하단 ALV 그리드에 출력한다.
```abap
340| GV_VARI2-REPORT = SY-REPID.
341| CALL METHOD GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
342| EXPORTING
343| I_STRUCTURE_NAME = 'GT_ITEM'
344| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
345| IS_LAYOUT = GV_LAYO2
346| IS_VARIANT = GV_VARI2
347| I_BUFFER_ACTIVE = C_X
348| I_SAVE = C_A
349| CHANGING
350| IT_OUTTAB = GT_ITEM2[]
351| IT_FIELDCATALOG = GT_FCAT_ITEM[].
```
- **EN**: Displays the document line items (GT_ITEM2) in the lower ALV grid via SET_TABLE_FOR_FIRST_DISPLAY.
- 호출(파서): 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-zfir0090top-185-gv_vari2), [`GV_ALV_GRID2`](#decl-zfir0090top-179-gv_alv_grid2), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO2`](#decl-zfir0090top-182-gv_layo2), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_ITEM`](#decl-zfir0090top-47-gt_item), [`GT_ITEM2`](#decl-zfir0090top-100-gt_item2), [`GT_FCAT_ITEM`](#decl-zfialv-82-gt_fcat_item)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L340-L351` · confidence 0.8 · `ZFIR0090#ZFIR0090F01#FORM#ALV_GRID_DISPLAY2#C1`
### FORM DISPLAY_PROCESSING_DATA — `ZFIR0090F01` L594-L697 (104줄)
*ALV에서 선택한 경비 결재문서 1건의 인터페이스 로그(ZIFT0010)를 남기고 RFC Z_FI_CONFIRM_DISPLAY로 전자결재 문서 URL을 받아 브라우저로 여는 FORM이다.*
> 이 unit 의 조각 3개가 80/104줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
#### [validation] ALV 선택행을 읽어 미선택·복수선택을 막고 선택 문서에 전자결재 문서ID(APPID)가 있는지 검증한다.
```abap
605| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS
606| IMPORTING
607| ET_INDEX_ROWS = GT_ROWS[].
608|
609| IF GT_ROWS[] IS INITIAL.
610| MESSAGE S004. "선택된 데이터가 없습니다.
611| EXIT.
612| ELSE.
613| CLEAR: LV_CNT.
614| * 문서조회는 한건씩
615| DESCRIBE TABLE GT_ROWS LINES LV_CNT.
616|
617| IF LV_CNT GT 1.
618| MESSAGE S000 WITH '문서조회는 한건씩 조회 가능합니다'
619| DISPLAY LIKE C_E.
620| EXIT.
621| ENDIF.
622|
623| LOOP AT GT_ROWS INTO GS_ROWS.
624| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX.
625| CHECK SY-SUBRC EQ 0.
626|
627| IF GT_HEAD-APPID IS INITIAL.
628| MESSAGE S000 WITH '해당 데이터의 문서조회를 할 수 없습니다.'
629| DISPLAY LIKE C_E.
630| EXIT.
631| ENDIF.
```
- **EN**: Reads selected ALV rows and validates that exactly one document with an e-approval ID (APPID) is selected.
- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS
- SAP 객체: CL_GUI_ALV_GRID
- 업무 키워드: 선택행 검증, 단건 조회, 결재문서 ID
- English: ALV Selected Rows, Validation, Approval Document ID
- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0090top-178-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0090f01-595-lv_cnt), [`C_E`](#decl-zficom-212-c_e), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`GT_HEAD`](#decl-zfir0090top-26-gt_head)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L605-L631` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#DISPLAY_PROCESSING_DATA#C1`
#### [db_write] ZIFT0010에서 해당 APPID의 최대 SEQ를 구해 +1한 순번으로 호스트·프로그램·요청자·시간을 담은 FI 인터페이스 공통로그를 MODIFY하고 LT_CMLOG에 적재한다.
```abap
636| SELECT MAX( SEQ )
637| INTO LV_MAX
638| FROM ZIFT0010
639| WHERE UNQID EQ GT_HEAD-APPID.
640|
641| CLEAR ZIFT0010.
642| ZIFT0010-UNQID = GT_HEAD-APPID.
643| ZIFT0010-SEQ = LV_MAX + 1.
644| ZIFT0010-HOST = SY-HOST.
645| ZIFT0010-PGMID = SY-REPID.
646| ZIFT0010-REQID = SY-UNAME.
647| ZIFT0010-REQTM = SY-UZEIT.
648| * CBO TABLE 저장
649| ZIFT0010-MODUL = 'FI'.
650| MODIFY ZIFT0010.
651|
652| CLEAR: LT_CMLOG.
653| MOVE-CORRESPONDING ZIFT0010 TO LT_CMLOG.
654| APPEND LT_CMLOG.
```
- **EN**: Determines the next sequence for the approval ID in ZIFT0010 and writes an interface common log record (host, program, requester, time, module FI).
- 테이블(파서): read [ZIFT0010](/tables/ZIFT0010.md) / write [ZIFT0010](/tables/ZIFT0010.md)
- SAP 객체: ZIFT0010, ZIFS0010
- 업무 키워드: 인터페이스 로그, 공통로그, 순번 채번
- English: Interface Log, Sequence Number, CBO Table
- 정의부(복사 시 함께 필요): [`LV_MAX`](#decl-zfir0090f01-599-lv_max), [`ZIFT0010`](#decl-zfir0090top-8-zift0010), [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`LT_CMLOG`](#decl-zfir0090f01-600-lt_cmlog)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L636-L654` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#DISPLAY_PROCESSING_DATA#C2`
#### [fm_call] RFC 목적지 ZFI01의 Z_FI_CONFIRM_DISPLAY에 APPID를 넘겨 전자결재 문서 URL을 받고, URL이 있으면 CALL_BROWSER로 웹 브라우저를 띄우며 실패 시 오류 메시지를 표시한다.
```abap
660| CALL FUNCTION 'Z_FI_CONFIRM_DISPLAY'
661| DESTINATION 'ZFI01'
662| EXPORTING
663| * I_UNQID = GT_HEAD-APPID
664| I_APPID = GT_HEAD-APPID
665| IMPORTING
666| E_STATS = LV_STATS
667| E_MESSG = LV_MESSG
668| E_URL = LV_URL
669| TABLES
670| IT_CMLOG = LT_CMLOG.
671|
672| IF LV_URL EQ SPACE.
673| MESSAGE S000 WITH '문서조회할 URL 주소가 없습니다.'
674| DISPLAY LIKE C_E.
675| EXIT.
676| ELSE.
677| * 브라우져 호출
678| CALL FUNCTION 'CALL_BROWSER'
679| EXPORTING
680| URL = LV_URL
681| EXCEPTIONS
682| FRONTEND_NOT_SUPPORTED = 1
683| FRONTEND_ERROR = 2
684| PROG_NOT_FOUND = 3
685| NO_BATCH = 4
686| UNSPECIFIED_ERROR = 5
687| OTHERS = 6.
688| IF SY-SUBRC NE 0.
689| MESSAGE S000 WITH '웹 브라우저 호출 시 에러가 발생하였습니다.'
690| DISPLAY LIKE C_E.
691| EXIT.
692| ENDIF.
693| ENDIF.
```
- **EN**: Calls RFC Z_FI_CONFIRM_DISPLAY (destination ZFI01) with the approval ID to obtain the e-approval document URL and opens it with CALL_BROWSER, reporting errors.
- 호출(파서): Z_FI_CONFIRM_DISPLAY, CALL_BROWSER
- SAP 객체: Z_FI_CONFIRM_DISPLAY, CALL_BROWSER, ZFI01
- 업무 키워드: 전자결재 문서조회, RFC 호출, 브라우저 호출, URL
- English: RFC Destination, E-Approval, CALL_BROWSER, Interface
- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`LV_STATS`](#decl-zfir0090f01-596-lv_stats), [`LV_MESSG`](#decl-zfir0090f01-597-lv_messg), [`LV_URL`](#decl-zfir0090f01-598-lv_url), [`LT_CMLOG`](#decl-zfir0090f01-600-lt_cmlog), [`C_E`](#decl-zficom-212-c_e)
- 위치: `abap://ZFIR0090/ZFIR0090F01#L660-L693` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#DISPLAY_PROCESSING_DATA#C3`
## 정의부 (335건)
로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `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).
```
### `ZFIR0090CLS` (3건)
#### LCL_EVENT_RECEIVER_GRID — class · L7-L27 {#decl-zfir0090cls-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-zfir0090cls-48-gv_event1}
```abap
DATA : GV_EVENT1 TYPE REF TO LCL_EVENT_RECEIVER_GRID.
```
#### GV_EVENT2 — data · L49-L49 {#decl-zfir0090cls-49-gv_event2}
```abap
DATA:
GV_EVENT2 TYPE REF TO LCL_EVENT_RECEIVER_GRID.
```
### `ZFIR0090TOP` (48건)
#### ZFIT0100 — tables · L7-L7 {#decl-zfir0090top-7-zfit0100}
```abap
TABLES: ZFIT0100. " 임시전표 상신 관리
```
#### ZIFT0010 — tables · L8-L8 {#decl-zfir0090top-8-zift0010}
```abap
TABLES:
ZIFT0010. " IF 공통 Log
```
#### TKA02 — tables · L9-L9 {#decl-zfir0090top-9-tka02}
```abap
TABLES:
TKA02. " 관리회계 영역 지정
```
#### GT_BKPF — data · L15-L15 {#decl-zfir0090top-15-gt_bkpf}
```abap
DATA: GT_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE.
```
#### GT_BSEG — data · L16-L16 {#decl-zfir0090top-16-gt_bseg}
```abap
DATA:
GT_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE.
```
#### IT_ZFIT0140 — data · L19-L21 {#decl-zfir0090top-19-it_zfit0140}
```abap
DATA: BEGIN OF IT_ZFIT0140 OCCURS 0.
INCLUDE STRUCTURE ZFIT0140.
DATA END OF IT_ZFIT0140.
```
#### GT_HEAD — data · L26-L44 {#decl-zfir0090top-26-gt_head}
```abap
DATA: BEGIN OF GT_HEAD OCCURS 0,
BUKRS LIKE ZFIT0140-BUKRS,
LIFNR LIKE ZFIT0140-LIFNR,
GUBUN LIKE ZFIT0140-GUBUN,
BELNR LIKE ZFIT0140-BELNR,
GJAHR LIKE ZFIT0140-GJAHR,
AMT LIKE ZFIT0140-AMT,
DRAFT_DATE LIKE ZFIT0140-DRAFT_DATE,
APPROVAL_DATE LIKE ZFIT0140-APPROVAL_DATE,
BUDAT LIKE ZFIT0140-BUDAT,
GSBER2 LIKE ZFIT0140-GSBER2,
APPID LIKE ZFIT0140-APPID,
KOSTL LIKE BSEG-KOSTL,
GUBUN_N(10),
NAME1(20),
TEXT1(20),
* CELLTAB TYPE LVC_T_STYL,
END OF GT_HEAD.
```
#### GT_ITEM — data · L47-L98 {#decl-zfir0090top-47-gt_item}
```abap
DATA: BEGIN OF GT_ITEM OCCURS 0,
BUKRS LIKE BSEG-BUKRS,
GJAHR LIKE BSEG-GJAHR, "회계년도
BELNR LIKE BSEG-BELNR, "전표번호
BUZEI LIKE BSEG-BUZEI, "개별항목id
SHKZG LIKE BSEG-SHKZG, "차대(S,H)
BSCHL LIKE BSEG-BSCHL, "전기키
UMSKZ LIKE BSEG-UMSKZ, "SpGl
BSCHL_T LIKE TBSLT-LTEXT, "전기키이름
HKONT LIKE BSEG-HKONT, "G/L 계정
TXT50 LIKE SKAT-TXT50, "G/L 계정명
MWSKZ LIKE BSEG-MWSKZ, "세금코드(Tx)
MWSKZ_T LIKE T007S-TEXT1, "세금코드명
DMBTR LIKE BSEG-DMBTR, "원화금액
WRBTR LIKE BSEG-WRBTR, "전표통화금액
MWSTS LIKE BSEG-MWSTS, "세액(현지 통화)
WMWST LIKE BSEG-WMWST, "세액(전표 통화)
GSBER LIKE BSEG-GSBER, "BA(사업영역)
SGTXT LIKE BSEG-SGTXT, "적요
KOART LIKE BSEG-KOART, "계정유형
KOART_T(8) TYPE C, "계정유형명
SUBAC LIKE BSEG-LIFNR, "보조부계정(구매처,고객)
SUBNM LIKE LFA1-NAME1, "보조부계정명
ZLSPR LIKE BSEG-ZLSPR, "지급보류
ZLSPR_T LIKE T008T-TEXTL, "지급보류명
ZTERM LIKE /DSD/HH_RACOLPAY-ZTERM, "지급조건
ZTERM_T LIKE T052U-TEXT1, "지급조건명
FDTAG LIKE BSEG-FDTAG, "계획일(지급만기일)
ZLSCH LIKE BSEG-ZLSCH, "지급방법
ZLSCH_T LIKE T042Z-TEXT1, "지급방법명
KOSTL LIKE BSEG-KOSTL, "코스트센터
KOSTL_T LIKE CSKT-LTEXT, "코스트센터명
AUFNR LIKE BSEG-AUFNR, "오더
FISTL LIKE BSEG-FISTL, "FUND CENTER
FISTL_T LIKE FMFCTRT-BESCHR, "FUND CENTER Description
PICON LIKE ICON-ID, "PA 아이콘
PRCTR LIKE BSEG-PRCTR, "손익센터
ANBWA LIKE BSEG-ANBWA, "자산거래유형
WAERS LIKE BKPF-WAERS, "통화
FKBER LIKE BSEG-FKBER, "기능영역
XREF1 LIKE BSEG-XREF1, "신고사업자
XNEGP LIKE BSEG-XNEGP, "마이너스
EBELN LIKE BSEG-EBELN, "구매문서
ZUONR LIKE BSEG-ZUONR, "지정
BUPLA LIKE BSEG-BUPLA, "사업장
BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명
MATNR LIKE BSEG-MATNR, "자재번호
ANLN1 LIKE BSEG-ANLN1, "자산번호
AUGBL LIKE BSEG-AUGBL,
AUGDT LIKE BSEG-AUGDT,
KIDNO LIKE BSEG-KIDNO,
END OF GT_ITEM.
```
#### GT_ITEM2 — data · L100-L100 {#decl-zfir0090top-100-gt_item2}
```abap
DATA: GT_ITEM2 LIKE GT_ITEM OCCURS 0 WITH HEADER LINE.
```
#### GT_UNAME — data · L104-L107 {#decl-zfir0090top-104-gt_uname}
```abap
DATA: BEGIN OF GT_UNAME OCCURS 0,
BNAME LIKE V_USERNAME-BNAME,
NAMET LIKE V_USERNAME-NAME_TEXT,
END OF GT_UNAME.
```
#### GT_T003T — data · L109-L112 {#decl-zfir0090top-109-gt_t003t}
```abap
DATA: BEGIN OF GT_T003T OCCURS 0,
BLART LIKE T003T-BLART,
LTEXT LIKE T003T-LTEXT,
END OF GT_T003T.
```
#### GT_CSKT — data · L114-L117 {#decl-zfir0090top-114-gt_cskt}
```abap
DATA: BEGIN OF GT_CSKT OCCURS 0,
KOSTL LIKE CSKT-KOSTL,
KTEXT LIKE CSKT-KTEXT,
END OF GT_CSKT.
```
#### GT_BRANCH — data · L119-L122 {#decl-zfir0090top-119-gt_branch}
```abap
DATA: BEGIN OF GT_BRANCH OCCURS 0,
BRANCH LIKE J_1BBRANCH-BRANCH,
NAME LIKE J_1BBRANCH-NAME,
END OF GT_BRANCH.
```
#### GT_TBSLT — data · L124-L128 {#decl-zfir0090top-124-gt_tbslt}
```abap
DATA: BEGIN OF GT_TBSLT OCCURS 0,
BSCHL LIKE TBSLT-BSCHL,
UMSKZ LIKE TBSLT-UMSKZ,
LTEXT LIKE TBSLT-LTEXT,
END OF GT_TBSLT.
```
#### GT_KNA1 — data · L130-L133 {#decl-zfir0090top-130-gt_kna1}
```abap
DATA: BEGIN OF GT_KNA1 OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF GT_KNA1.
```
#### GT_LFA1 — data · L135-L138 {#decl-zfir0090top-135-gt_lfa1}
```abap
DATA: BEGIN OF GT_LFA1 OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF GT_LFA1.
```
#### GT_SKAT — data · L140-L143 {#decl-zfir0090top-140-gt_skat}
```abap
DATA: BEGIN OF GT_SKAT OCCURS 0,
SAKNR LIKE SKAT-SAKNR,
TXT50 LIKE SKAT-TXT50 ,
END OF GT_SKAT.
```
#### GT_T052U — data · L145-L148 {#decl-zfir0090top-145-gt_t052u}
```abap
DATA: BEGIN OF GT_T052U OCCURS 0,
ZTERM LIKE T052U-ZTERM,
TEXT1 LIKE T052U-TEXT1,
END OF GT_T052U.
```
#### GT_T007S — data · L150-L153 {#decl-zfir0090top-150-gt_t007s}
```abap
DATA: BEGIN OF GT_T007S OCCURS 0,
MWSKZ LIKE T007S-MWSKZ,
TEXT1 LIKE T007S-TEXT1,
END OF GT_T007S.
```
#### GT_DOMAIN — data · L155-L159 {#decl-zfir0090top-155-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.
```
#### R_STATS — ranges · L161-L161 {#decl-zfir0090top-161-r_stats}
```abap
RANGES: R_STATS FOR ZFIT0100-STATS.
```
#### R_BLART — ranges · L162-L162 {#decl-zfir0090top-162-r_blart}
```abap
RANGES:
R_BLART FOR BKPF-BLART.
```
#### GV_SUPER — data · L164-L164 {#decl-zfir0090top-164-gv_super}
```abap
DATA: GV_SUPER TYPE C. " 회계팀장권한
```
#### GV_CON — data · L165-L165 {#decl-zfir0090top-165-gv_con}
```abap
DATA:
GV_CON TYPE C. " 임원권한
```
#### GV_SABUN — data · L166-L166 {#decl-zfir0090top-166-gv_sabun}
```abap
DATA:
GV_SABUN LIKE ZFIT0100-SABUN VALUE 'xclick'. " 사번(입력)
```
#### G_NAME1 — data · L168-L168 {#decl-zfir0090top-168-g_name1}
```abap
DATA: G_NAME1(20).
```
#### GT_FCAT_ITEM2 — data · L171-L171 {#decl-zfir0090top-171-gt_fcat_item2}
```abap
DATA : GT_FCAT_ITEM2 TYPE LVC_T_FCAT.
```
#### GS_STABLE — data · L173-L173 {#decl-zfir0090top-173-gs_stable}
```abap
DATA : GS_STABLE TYPE LVC_S_STBL.
```
#### GC_SPLITTER — data · L174-L174 {#decl-zfir0090top-174-gc_splitter}
```abap
DATA:
GC_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER.
```
#### GC_CONTAINER1 — data · L175-L175 {#decl-zfir0090top-175-gc_container1}
```abap
DATA:
GC_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER.
```
#### GC_CONTAINER2 — data · L176-L176 {#decl-zfir0090top-176-gc_container2}
```abap
DATA:
GC_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER.
```
#### GV_ALV_GRID — data · L177-L177 {#decl-zfir0090top-177-gv_alv_grid}
```abap
DATA:
GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID.
```
#### GV_ALV_GRID1 — data · L178-L178 {#decl-zfir0090top-178-gv_alv_grid1}
```abap
DATA:
GV_ALV_GRID1 TYPE REF TO CL_GUI_ALV_GRID.
```
#### GV_ALV_GRID2 — data · L179-L179 {#decl-zfir0090top-179-gv_alv_grid2}
```abap
DATA:
GV_ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID.
```
#### GV_LAYO — data · L180-L180 {#decl-zfir0090top-180-gv_layo}
```abap
DATA:
GV_LAYO TYPE LVC_S_LAYO.
```
#### GV_LAYO1 — data · L181-L181 {#decl-zfir0090top-181-gv_layo1}
```abap
DATA:
GV_LAYO1 TYPE LVC_S_LAYO.
```
#### GV_LAYO2 — data · L182-L182 {#decl-zfir0090top-182-gv_layo2}
```abap
DATA:
GV_LAYO2 TYPE LVC_S_LAYO.
```
#### GV_VARI — data · L183-L183 {#decl-zfir0090top-183-gv_vari}
```abap
DATA:
GV_VARI TYPE DISVARIANT.
```
#### GV_VARI1 — data · L184-L184 {#decl-zfir0090top-184-gv_vari1}
```abap
DATA:
GV_VARI1 TYPE DISVARIANT.
```
#### GV_VARI2 — data · L185-L185 {#decl-zfir0090top-185-gv_vari2}
```abap
DATA:
GV_VARI2 TYPE DISVARIANT.
```
#### C_USNAM — constants · L190-L190 {#decl-zfir0090top-190-c_usnam}
```abap
CONSTANTS: C_USNAM TYPE SY-UNAME VALUE 'FI07'. " 회계팀장ID
```
#### C_USNAM_2 — constants · L191-L191 {#decl-zfir0090top-191-c_usnam_2}
```abap
CONSTANTS:
C_USNAM_2 TYPE SY-UNAME VALUE 'FI03'. " 임원ID
```
#### P_BUKRS — parameter · L198-L198 {#decl-zfir0090top-198-p_bukrs}
```abap
PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY.
```
#### P_LIFNR — parameter · L199-L199 {#decl-zfir0090top-199-p_lifnr}
```abap
PARAMETERS:
P_LIFNR LIKE ZFIT0140-LIFNR OBLIGATORY.
```
#### S_DRAFT — select-option · L202-L202 {#decl-zfir0090top-202-s_draft}
```abap
SELECT-OPTIONS: S_DRAFT FOR BKPF-BUDAT.
```
#### S_BUDAT — select-option · L203-L203 {#decl-zfir0090top-203-s_budat}
```abap
SELECT-OPTIONS:
S_BUDAT FOR BKPF-BUDAT.
```
#### P_RA — parameter · L209-L209 {#decl-zfir0090top-209-p_ra}
```abap
PARAMETERS: P_RA RADIOBUTTON GROUP G1 .
```
#### P_RB — parameter · L211-L211 {#decl-zfir0090top-211-p_rb}
```abap
PARAMETERS: P_RB RADIOBUTTON GROUP G1.
```
### `ZFIR0090F01` (7건)
#### L_GUBUN — data · unit 로컬 · L12-L12 {#decl-zfir0090f01-12-l_gubun}
```abap
DATA: L_GUBUN.
```
#### LV_CNT — data · unit 로컬 · L595-L595 {#decl-zfir0090f01-595-lv_cnt}
```abap
DATA: LV_CNT TYPE N.
```
#### LV_STATS — data · unit 로컬 · L596-L596 {#decl-zfir0090f01-596-lv_stats}
```abap
DATA:
LV_STATS TYPE CHAR1.
```
#### LV_MESSG — data · unit 로컬 · L597-L597 {#decl-zfir0090f01-597-lv_messg}
```abap
DATA:
LV_MESSG TYPE CHAR100.
```
#### LV_URL — data · unit 로컬 · L598-L598 {#decl-zfir0090f01-598-lv_url}
```abap
DATA:
LV_URL TYPE CHAR1024.
```
#### LV_MAX — data · unit 로컬 · L599-L599 {#decl-zfir0090f01-599-lv_max}
```abap
DATA:
LV_MAX LIKE ZIFT0010-SEQ.
```
#### LT_CMLOG — data · unit 로컬 · L600-L600 {#decl-zfir0090f01-600-lt_cmlog}
```abap
DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE.
```
## 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 | ZFIR0090 L32-39 | 0 | ALV 초기 설정(ALV_SETTING)만 수행하는 INITIALIZATION 이벤트이다. |
| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIR0090 L40-45 | 0 | 내용이 없는 빈 AT SELECTION-SCREEN OUTPUT 이벤트이다. |
| START-OF-SELECTION | EVENT | ZFIR0090 L46-60 | 0 | 회사코드 권한(AUTHORITY_BUKRS)과 사용자·T-Code 기반 프로그램 실행 권한(AUTHORITY_PG)을 검증한 뒤 GET_DATA로 승인 경비 내역을 조회하는 START-OF-SELECTION 이벤트이다. |
| END-OF-SELECTION | EVENT | ZFIR0090 L61-69 | 0 | 데이터 유무 검사가 주석 처리된 채 무조건 화면 0100을 호출하는 END-OF-SELECTION 이벤트이다. |
| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0090CLS L33-35 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. |
| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK2 | METHOD | ZFIR0090CLS L37-39 | 0 | 두 번째 ALV 그리드의 핫스팟 클릭 이벤트를 HOTSPOT_CLICK2 서브루틴으로 위임하는 이벤트 핸들러다. |
| LCL_EVENT_RECEIVER_GRID~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0090CLS L41-43 | 0 | ALV 그리드 더블클릭 이벤트를 받아 DOUBLE_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. |
| GET_DATA | FORM | ZFIR0090F01 L9-80 | 2 | 출장비/교통비 구분·회사코드·공급업체(사원)·기안일·전기일 조건으로 전자결재 승인 경비 내역 ZFIT0140을 읽고 공급업체명·사업영역별 코스트센터(ZFIT0040)·코스트센터명을 붙여 GT_HEAD에 COLLECT 집계하는 FORM이다. |
| SPLITTER_CONTAINER | FORM | ZFIR0090F01 L88-140 | 0 | 화면 0100의 커스텀 컨테이너에 2행 1열 스플리터를 만들고 상단(헤더)·하단(아이템) 컨테이너에 ALV 그리드 객체 두 개를 생성하는 FORM이다. |
| CREATE_AND_INIT_CONTROLS_CON | FORM | ZFIR0090F01 L149-176 | 0 | 헤더/아이템 ALV 그리드에 핫스팟·더블클릭 이벤트 핸들러를 등록하고 레이아웃·툴바 제외·필드카탈로그 설정 후 두 ALV를 표시하도록 초기화하는 FORM이다. |
| SET_GRID_LAYOUT1 | FORM | ZFIR0090F01 L185-202 | 0 | 헤더/아이템 ALV의 레이아웃(제목, 열 최적화, 행 선택모드, 줄무늬, 셀 스타일 필드명)을 설정하는 FORM이다. |
| ALV_GRID_DISPLAY1 | FORM | ZFIR0090F01 L211-228 | 1 | 헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 승인 경비 문서 헤더(GT_HEAD)를 상단 ALV에 표시하는 FORM이다. |
| SET_FIELD_CATALOGS1 | FORM | ZFIR0090F01 L237-326 | 0 | 헤더 ALV(GT_HEAD)의 필드카탈로그를 생성해 승인 경비 문서 헤더 컬럼의 제목·위치·정렬 속성을 설정하는 FORM이다. |
| ALV_GRID_DISPLAY2 | FORM | ZFIR0090F01 L335-354 | 1 | 아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 생성할 전표 아이템(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다. |
| SET_FIELD_CATALOGS2 | FORM | ZFIR0090F01 L363-480 | 0 | 아이템 ALV(GT_ITEM)의 필드카탈로그를 생성해 전표번호·항목·전기키·계정·거래처·금액·세금코드·코스트센터 등 컬럼 속성을 설정하는 FORM이다. |
| HOTSPOT_CLICK | FORM | ZFIR0090F01 L490-511 | 1 | 헤더 ALV 핫스팟 클릭 시 선택 문서에 대해 BSEG_PROCESS로 전표 아이템을 구성하고 정렬한 뒤 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다. |
| HOTSPOT_CLICK2 | FORM | ZFIR0090F01 L520-558 | 1 | 아이템 ALV 핫스팟 클릭 시 전표번호는 FB03, 거래처는 계정유형(고객/공급업체/자산/자재)에 따라 FD03/FK03/AS03/MM03 조회 화면으로 이동하는 FORM이다. |
| DOUBLE_CLICK | FORM | ZFIR0090F01 L567-588 | 1 | 헤더 ALV 더블클릭 시 해당 전표(BUKRS/GJAHR/BELNR)의 아이템을 GT_ITEM에서 골라 GT_ITEM2를 채우고 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다. |
| DISPLAY_PROCESSING_DATA | FORM | ZFIR0090F01 L594-697 | 3 | ALV에서 선택한 경비 결재문서 1건의 인터페이스 로그(ZIFT0010)를 남기고 RFC Z_FI_CONFIRM_DISPLAY로 전자결재 문서 URL을 받아 브라우저로 여는 FORM이다. |
| BSEG_PROCESS | FORM | ZFIR0090F01 L701-998 | 2 | 선택한 결재 건의 전표 헤더·아이템을 읽고 표시용 조직단위·거래처·계정 텍스트를 붙인다. |
| USER_COMMAND_0100 INPUT | MODULE | ZFIR0090I01 L9-18 | 0 | 화면 0100 PAI에서 문서조회 명령 시 DISPLAY_PROCESSING_DATA로 전자결재 문서를 조회하는 사용자 명령 모듈이다. |
| USER_COMMAND_0200 INPUT | MODULE | ZFIR0090I01 L24-32 | 0 | 화면 0200 PAI에서 ENTR 입력 시 화면을 닫는 단순 사용자 명령 처리 모듈이다. |
| STATUS_0100 OUTPUT | MODULE | ZFIR0090O01 L9-14 | 0 | |
| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0090O01 L20-43 | 0 | |
| STATUS_0200 OUTPUT | MODULE | ZFIR0090O01 L49-54 | 0 | |