--- type: abap-program title: "ZFIR0100 — [FI] 전자세금계산서 매입전표 생성" description: "전자세금계산서 수신 데이터(ZDTV3T_AP_EXT 헤더/ZDTV3T_AP_EXT_D 상세)를 읽어 매입 전표를 생성하는 화면이다. 편집 가능한 ALV 그리드에서 수신 세금계산서를 검토·수정하고, 전기 대상을 확정해 저장·전기한다. 실제 전표 입력 화면은 ZFIR0110_DOC 을 호출해 처리하며, 셀 단위 입력 제어(CELLTAB)와 변형(Variant) 관리를 갖춘다." resource: "abap://ZFIR0100" tags: ["전자세금계산서", "세금계산서", "매입", "부가세", "전표", "채무관리", "FI", "행선택", "선택검증", "저장전검증", "ALV선택", "전표번호", "저장", "사용여부", "발행일", "사업장", "계산서순번", "상태아이콘", "사용자 명령", "전기"] 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: ["ZDTV3T_AP_EXT", "ZDTV3T_AP_EXT_D"] x-tables-write: ["GT_MAIN", "ZDTV3T_AP_EXT", "ZDTV3T_AP_EXT_D"] x-calls: ["FB03", "LAST_DAY_OF_MONTHS", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "REUSE_ALV_VARIANT_DEFAULT_GET", "SAPGUI_PROGRESS_INDICATOR", "ZFIR0110_DOC"] x-code-hash: "009c573d7068cede209822b699c51af6a3cf09665a4077f9c8cdf6ee202d53e5" x-unit-count: 64 x-chunk-count: 25 x-declaration-count: 84 --- ## 업무 목적 전자세금계산서 수신 데이터(ZDTV3T_AP_EXT 헤더/ZDTV3T_AP_EXT_D 상세)를 읽어 매입 전표를 생성하는 화면이다. 편집 가능한 ALV 그리드에서 수신 세금계산서를 검토·수정하고, 전기 대상을 확정해 저장·전기한다. 실제 전표 입력 화면은 ZFIR0110_DOC 을 호출해 처리하며, 셀 단위 입력 제어(CELLTAB)와 변형(Variant) 관리를 갖춘다. ## 주 흐름 1. 초기 변형(Variant)을 불러오고 선택화면을 준비한다 (SET_INIT → GET_INIT_VARIANT → GET_VARIANT) 2. 대상 기간의 전자세금계산서 수신 내역을 읽어 그리드 데이터를 만든다 (SET_DATA) 3. 셀 입력 가능 여부와 행 스타일을 설정한다 (SET_ITAB_STYLE → SET_CELLTAB) 4. 필드카탈로그·레이아웃·툴바를 구성해 편집 가능한 ALV 를 화면 0100 에 띄운다 (SET_FIELD01 → RUN_DISPLAY_ALV) 5. 사용자 변경을 반영하고 날짜·텍스트를 보정한다 (SET_CHANGE → DATE_PROCESS → TEXT_PROCESS) 6. 확인 팝업 후 저장·전기한다 (POPUP_TO_CONFIRM → SET_SAVE → SET_POST) 7. 전표 입력 상세는 ZFIR0110_DOC 을 호출해 처리한다 ## 핵심 내부테이블 - `GT_MAIN` — 전자세금계산서 수신 내역 편집 그리드 (채움: SET_DATA / 소비: RUN_DISPLAY_ALV, SET_SAVE, SET_POST) ## 테이블 / 외부 호출 - read: ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D - write: GT_MAIN, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D - 외부 호출: FB03, LAST_DAY_OF_MONTHS, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, REUSE_ALV_VARIANT_DEFAULT_GET, SAPGUI_PROGRESS_INDICATOR, ZFIR0110_DOC ## 로직 조각 (25건 / unit 18개) LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. 테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. ### FORM GET_INIT_VARIANT — `ZFIR0100F01` L55-L74 (20줄) *변형 키를 초기화하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형(Variant)을 조회하는 FORM 이다.* > 이 unit 의 조각 1개가 12/20줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] REUSE_ALV_VARIANT_DEFAULT_GET(I_SAVE='A') 으로 리포트·사용자·핸들에 해당하는 기본 ALV 변형을 GX_VARIANT 에 읽는다(결과 반영은 주석 처리). ```abap 61| GX_VARIANT = GS_VARIANT. 62| 63| CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' 64| EXPORTING 65| I_SAVE = 'A' 66| CHANGING 67| CS_VARIANT = GX_VARIANT 68| EXCEPTIONS 69| NOT_FOUND = 2. 70| IF SY-SUBRC = 0. 71| **** PA_LAYOU = GX_VARIANT-VARIANT. 72| ENDIF. ``` - **EN**: Retrieves the user's default ALV layout variant via REUSE_ALV_VARIANT_DEFAULT_GET. - 호출(파서): REUSE_ALV_VARIANT_DEFAULT_GET - SAP 객체: REUSE_ALV_VARIANT_DEFAULT_GET - 업무 키워드: 기본 변형, ALV 레이아웃, 변형 조회 - English: Default Variant, ALV Layout - 정의부(복사 시 함께 필요): [`GX_VARIANT`](#decl-zfir0100t01-32-gx_variant), [`GS_VARIANT`](#decl-zfir0100t01-31-gs_variant) - 위치: `abap://ZFIR0100/ZFIR0100F01#L61-L72` · confidence 0.8 · `ZFIR0100#ZFIR0100F01#FORM#GET_INIT_VARIANT#C1` ### FORM SET_DATA — `ZFIR0100F01` L92-L166 (75줄) *조회 월의 기간을 만든 뒤 전자세금계산서 헤더(ZDTV3T_AP_HEAD)·확장(ZDTV3T_AP_EXT)·상세(ZDTV3T_AP_EXT_D)를 조인해 전표처리 상태 조건으로 수신 내역을 IT_ZDTV3T_AP_HEAD 에 읽는 FORM 이다.* > 이 unit 의 조각 2개가 37/75줄(49%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] 라디오버튼(P_R1 미처리/P_R2 처리완료/P_R3 전체)에 따라 전표처리 여부(USE_DOC) 필터값 L_DOC1/L_DOC2 를 결정한다. ```abap 125| IF P_R1 = 'X'. 126| L_DOC1 = SPACE. 127| L_DOC2 = SPACE. 128| ELSEIF P_R2 = 'X'. 129| L_DOC1 = 'X'. 130| L_DOC2 = 'X'. 131| ELSEIF P_R3 = 'X'. 132| L_DOC1 = 'X'. 133| L_DOC2 = SPACE. 134| ENDIF. ``` - **EN**: Derives the USE_DOC filter values from the selection radio buttons (unposted, posted, or all). - 업무 키워드: 조회 조건, 전표처리 여부, 라디오버튼 - English: Selection Criteria, Document Status Filter - 정의부(복사 시 함께 필요): [`P_R1`](#decl-zfir0100scr-22-p_r1), [`L_DOC1`](#decl-zfir0100f01-96-l_doc1), [`L_DOC2`](#decl-zfir0100f01-96-l_doc2), [`P_R2`](#decl-zfir0100scr-25-p_r2), [`P_R3`](#decl-zfir0100scr-28-p_r3) - 위치: `abap://ZFIR0100/ZFIR0100F01#L125-L134` · confidence 0.8 · `ZFIR0100#ZFIR0100F01#FORM#SET_DATA#C1` #### [sql_select] ZDTV3T_AP_HEAD 를 ZDTV3T_AP_EXT·ZDTV3T_AP_EXT_D 와 회사코드·작성일자·사업장·일련번호로 INNER JOIN 하여 회사코드·작성일 기간·공급자 사업자번호·이메일·미취소(INV_SIGN 공백)·전표처리 여부 조건으로 수신 전자세금계산서를 IT_ZDTV3T_AP_HEAD 에 적재한다. ```abap 138| SELECT * 139| INTO CORRESPONDING FIELDS OF IT_ZDTV3T_AP_HEAD 140| FROM ( ( ZDTV3T_AP_HEAD AS A INNER JOIN ZDTV3T_AP_EXT AS B 141| ON A~BUKRS = B~BUKRS 142| AND A~ISSUE_DATE = B~ISSUE_DATE 143| AND A~BUPLA = B~BUPLA 144| AND A~INV_SEQ = B~INV_SEQ ) 145| 146| INNER JOIN ZDTV3T_AP_EXT_D AS C 147| 148| ON B~BUKRS = C~BUKRS 149| AND B~ISSUE_DATE = C~ISSUE_DATE 150| AND B~BUPLA = C~BUPLA 151| AND B~INV_SEQ = C~INV_SEQ ) 152| 153| WHERE A~BUKRS = P_BUKRS 154| AND A~ISSUE_DATE IN S_BUDAT 155| AND A~SU_ID IN S_SU_ID 156| AND A~IP_EMAIL1 IN S_EMAIL 157| AND A~INV_SIGN = '' 158| AND ( B~USE_DOC = L_DOC1 OR 159| B~USE_DOC = L_DOC2 ). 160| 161| APPEND IT_ZDTV3T_AP_HEAD. 162| CLEAR IT_ZDTV3T_AP_HEAD. 163| 164| ENDSELECT. ``` - **EN**: Selects received e-tax invoices by joining ZDTV3T_AP_HEAD with ZDTV3T_AP_EXT and ZDTV3T_AP_EXT_D on company code, issue date, business place and sequence, filtered by period, supplier ID, email, non-cancelled and USE_DOC status. - 테이블(파서): read [ZDTV3T_AP_EXT](/tables/ZDTV3T_AP_EXT.md), [ZDTV3T_AP_EXT_D](/tables/ZDTV3T_AP_EXT_D.md) / write - - SAP 객체: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D - 업무 키워드: 전자세금계산서 수신, 매입 세금계산서, 조회, 조인, 전표처리 여부 - English: E-Tax Invoice, AP Invoice, Business Place, Inner Join - 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`IT_ZDTV3T_AP_HEAD`](#decl-zfir0100top-11-it_zdtv3t_ap_head), [`ZDTV3T_AP_EXT`](#decl-zfir0100top-5-zdtv3t_ap_ext), [`ZDTV3T_AP_EXT_D`](#decl-zfir0100top-5-zdtv3t_ap_ext_d), [`P_BUKRS`](#decl-zfir0100scr-6-p_bukrs), [`S_BUDAT`](#decl-zfir0100top-48-s_budat), [`S_SU_ID`](#decl-zfir0100scr-12-s_su_id), [`S_EMAIL`](#decl-zfir0100scr-13-s_email), [`L_DOC1`](#decl-zfir0100f01-96-l_doc1), [`L_DOC2`](#decl-zfir0100f01-96-l_doc2) - 위치: `abap://ZFIR0100/ZFIR0100F01#L138-L164` · confidence 0.9 · `ZFIR0100#ZFIR0100F01#FORM#SET_DATA#C2` ### FORM DATE_PROCESS — `ZFIR0100F01` L311-L330 (20줄) *조회 연월(P_SPMON)로 월초~월말 날짜 범위 S_BUDAT 를 LAST_DAY_OF_MONTHS 로 구성하는 FORM 이다.* > 이 unit 의 조각 1개가 16/20줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [calculation] 연월 P_SPMON 의 1일을 시작일로 하고 LAST_DAY_OF_MONTHS 로 월말일을 구해 작성일자 조회 범위 S_BUDAT(BT) 를 만든다. ```abap 313| CLEAR: S_BUDAT[], S_BUDAT. 314| S_BUDAT-SIGN = 'I'. 315| S_BUDAT-OPTION = 'BT'. 316| S_BUDAT-LOW+0(6) = P_SPMON. 317| S_BUDAT-LOW+6(2) = '01'. 318| 319| CALL FUNCTION 'LAST_DAY_OF_MONTHS' 320| EXPORTING 321| DAY_IN = S_BUDAT-LOW 322| IMPORTING 323| LAST_DAY_OF_MONTH = S_BUDAT-HIGH 324| EXCEPTIONS 325| DAY_IN_NO_DATE = 1 326| OTHERS = 2. 327| 328| APPEND S_BUDAT. ``` - **EN**: Builds the issue-date range S_BUDAT from the first day of the selected month to its last day via LAST_DAY_OF_MONTHS. - 호출(파서): LAST_DAY_OF_MONTHS - SAP 객체: LAST_DAY_OF_MONTHS - 업무 키워드: 조회 기간, 월초, 월말, 날짜 범위 - English: Period Range, Last Day Of Month, Select-Option - 정의부(복사 시 함께 필요): [`S_BUDAT`](#decl-zfir0100top-48-s_budat), [`P_SPMON`](#decl-zfir0100scr-9-p_spmon) - 위치: `abap://ZFIR0100/ZFIR0100F01#L313-L328` · confidence 0.95 · `ZFIR0100#ZFIR0100F01#FORM#DATE_PROCESS#C1` ### FORM MODIFY_PROCESS — `ZFIR0100F01` L240-L261 (22줄) *조회된 IT_ZDTV3T_AP_HEAD 를 GT_MAIN 그리드 테이블로 옮기며 전표번호 유무에 따라 처리 상태 아이콘(ZICON)을 설정하는 FORM 이다.* > 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [other] 수신 전자세금계산서 각 건을 GT_MAIN 으로 복사하고 전표번호(BELNR)가 없으면 미처리 아이콘(@09@), 있으면 처리완료 아이콘(@08@)을 ZICON 에 넣어 그리드 상태 표시를 만든다. ```abap 244| LOOP AT IT_ZDTV3T_AP_HEAD. 245| 246| MOVE-CORRESPONDING IT_ZDTV3T_AP_HEAD TO GT_MAIN. 247| 248| IF GT_MAIN-BELNR IS INITIAL. 249| GT_MAIN-ZICON = '@09@'. 250| ELSE. 251| GT_MAIN-ZICON = '@08@'. 252| ENDIF. 253| 254| 255| APPEND GT_MAIN. 256| CLEAR GT_MAIN. 257| 258| ENDLOOP. ``` - **EN**: Copies each e-tax invoice row into GT_MAIN and sets the status icon based on whether an FI document number (BELNR) already exists. - SAP 객체: GT_MAIN, IT_ZDTV3T_AP_HEAD - 업무 키워드: 상태 아이콘, 전표처리 여부, 그리드 데이터 구성 - English: Status Icon, Document Number, Grid Data - 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`IT_ZDTV3T_AP_HEAD`](#decl-zfir0100top-11-it_zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main) - 위치: `abap://ZFIR0100/ZFIR0100F01#L244-L258` · confidence 0.85 · `ZFIR0100#ZFIR0100F01#FORM#MODIFY_PROCESS#C1` ### FORM DATA_CHANGED — `ZFIR0100F02` L962-L1040 (79줄) *편집 ALV 의 DATA_CHANGED 이벤트에서 변경된 셀 값을 GT_MAIN 에 반영하고 변경 플래그를 세우며 오류 시 프로토콜에 기록한 뒤 그리드를 새로고침하는 FORM 이다.* > 이 unit 의 조각 2개가 58/79줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] 행 삽입(MT_INSERTED_ROWS)이 있으면 셀 변경 처리를 하지 않고 종료한다. ```abap 977| DESCRIBE TABLE P_CHANGED->MT_INSERTED_ROWS LINES LV_LINE. 978| IF LV_LINE <> 0. 979| EXIT. 980| ENDIF. ``` - **EN**: Exits without processing when the change protocol contains inserted rows. - 호출(파서): P_CHANGED->MT_INSERTED_ROWS - SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL - 업무 키워드: 행 삽입 제외, 변경 검사 - English: Inserted Rows, Data Changed - 정의부(복사 시 함께 필요): [`LV_LINE`](#decl-zfir0100f02-968-lv_line) - 위치: `abap://ZFIR0100/ZFIR0100F02#L977-L980` · confidence 0.8 · `ZFIR0100#ZFIR0100F02#FORM#DATA_CHANGED#C1` #### [other] 변경된 셀(MT_GOOD_CELLS)마다 GET_CELL_VALUE 로 값을 읽어 GT_MAIN 의 해당 필드에 MODIFY 하고 회사코드를 채우며 변경 플래그(GV_CHK)를 세운 뒤, 오류면 ADD_PROTOCAL_ENTRY 로 기록하고 정상이면 MODIFY_CELL 로 셀 값을 확정한다(ZDTV3T_AP_EXT USE_DOC 갱신은 주석 처리). ```abap 982| LOOP AT P_CHANGED->MT_GOOD_CELLS INTO LS_MOD_CELLS. 983| CLEAR: GV_ERR, GS_MSG. 984| 985| ASSIGN COMPONENT LS_MOD_CELLS-FIELDNAME 986| OF STRUCTURE GT_MAIN TO . 987| 988| * 입력된 셀의 값 얻기 989| 990| CALL METHOD P_CHANGED->GET_CELL_VALUE 991| EXPORTING 992| I_ROW_ID = LS_MOD_CELLS-ROW_ID 993| I_FIELDNAME = LS_MOD_CELLS-FIELDNAME 994| I_TABIX = LS_MOD_CELLS-TABIX 995| IMPORTING 996| E_VALUE = . 997| 998| GV_CHK = 'X'. " 변경 CHECK 999| 1000| GT_MAIN-BUKRS = P_BUKRS. 1001| 1002| MODIFY GT_MAIN INDEX LS_MOD_CELLS-ROW_ID 1003| TRANSPORTING (LS_MOD_CELLS-FIELDNAME). 1004| 1005| 1006| IF GV_ERR IS NOT INITIAL. 1007| PERFORM ADD_PROTOCAL_ENTRY USING P_CHANGED 1008| LS_MOD_CELLS 1009| GS_MSG. 1010| ELSE. 1011| 1012| * UPDATE VALUE 1013| 1014| CALL METHOD P_CHANGED->MODIFY_CELL 1015| EXPORTING 1016| I_ROW_ID = LS_MOD_CELLS-ROW_ID 1017| I_FIELDNAME = LS_MOD_CELLS-FIELDNAME 1018| I_VALUE = LS_MOD_CELLS-VALUE. 1019| 1020| 1021| * IF LS_MOD_CELLS-FIELDNAME = 'BELNR'. 1022| * IF LS_MOD_CELLS-VALUE IS INITIAL. 1023| * L_USE_DOC = ''. 1024| * ELSE. 1025| * L_USE_DOC = 'X'. 1026| * ENDIF. 1027| * UPDATE ZDTV3T_AP_EXT SET: USE_DOC = L_USE_DOC 1028| * WHERE BUKRS = GT_MAIN-BUKRS 1029| * AND ISSUE_DATE = GT_MAIN-ISSUE_DATE 1030| * AND BUPLA = GT_MAIN-BUPLA 1031| * AND INV_SEQ = GT_MAIN-INV_SEQ. 1032| * ENDIF. 1033| ENDIF. 1034| 1035| ENDLOOP. ``` - **EN**: For each changed cell, reads the new value with GET_CELL_VALUE, updates the GT_MAIN field and change flag, and either logs an error via ADD_PROTOCAL_ENTRY or confirms the value with MODIFY_CELL. - 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) - 호출(파서): P_CHANGED->MT_GOOD_CELLS, P_CHANGED->GET_CELL_VALUE, ADD_PROTOCAL_ENTRY, P_CHANGED->MODIFY_CELL - SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL, GET_CELL_VALUE, MODIFY_CELL, GT_MAIN - 업무 키워드: 셀 변경 반영, 변경 플래그, 오류 프로토콜, 전표번호 입력 - English: Data Changed, Cell Value, Editable ALV - 정의부(복사 시 함께 필요): [`LS_MOD_CELLS`](#decl-zfir0100f02-965-ls_mod_cells), [`GV_ERR`](#decl-zfir0100t01-59-gv_err), [`GS_MSG`](#decl-zfir0100t01-58-gs_msg), [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [``](#decl-zfir0100f02-970--fs_field-), [`GV_CHK`](#decl-zfir0100t01-61-gv_chk), [`P_BUKRS`](#decl-zfir0100scr-6-p_bukrs) - 위치: `abap://ZFIR0100/ZFIR0100F02#L982-L1035` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#DATA_CHANGED#C2` ### FORM ADD_PROTOCAL_ENTRY — `ZFIR0100F02` L1064-L1084 (21줄) *편집 ALV 의 셀 검증 오류를 CL_ALV_CHANGED_DATA_PROTOCOL->ADD_PROTOCOL_ENTRY 로 오류 로그(메시지 00/E)에 추가하는 FORM 이다.* > 이 unit 의 조각 1개가 11/21줄(52%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [output] 검증 실패 셀(필드명·행)에 대해 FIMSG 메시지 내용을 ADD_PROTOCOL_ENTRY 로 등록해 ALV 오류 프로토콜에 표시한다. ```abap 1072| CALL METHOD RR_DATA_CHANGED->ADD_PROTOCOL_ENTRY 1073| EXPORTING 1074| I_MSGID = '00' 1075| I_MSGTY = 'E' 1076| I_MSGNO = PS_MESSAGE-MSGNO 1077| I_MSGV1 = PS_MESSAGE-MSGV1 1078| I_MSGV2 = PS_MESSAGE-MSGV2 1079| I_MSGV3 = PS_MESSAGE-MSGV3 1080| I_MSGV4 = PS_MESSAGE-MSGV4 1081| I_FIELDNAME = RS_MOD_CELLS-FIELDNAME 1082| I_ROW_ID = RS_MOD_CELLS-ROW_ID. ``` - **EN**: Adds an error message for the failed cell to the ALV changed-data protocol via ADD_PROTOCOL_ENTRY. - 호출(파서): RR_DATA_CHANGED->ADD_PROTOCOL_ENTRY - SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL, ADD_PROTOCOL_ENTRY - 업무 키워드: 오류 프로토콜, 셀 검증 오류, 메시지 - English: Error Protocol, Data Changed, ALV Grid - 위치: `abap://ZFIR0100/ZFIR0100F02#L1072-L1082` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#ADD_PROTOCAL_ENTRY#C1` ### FORM USER_COMMAND — `ZFIR0100F02` L874-L901 (28줄) *ALV 툴바 사용자 명령(REFRESH/SAVE/POST)을 받아 재조회·확인 후 저장·전표기표 FORM 으로 분기하는 디스패치 FORM 이다.* > 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] REFRESH 는 SET_DATA·MODIFY_PROCESS·SET_REFRESH 로 재조회, SAVE 는 POPUP_TO_CONFIRM 후 SET_SAVE, POST 는 SET_POST 로 매입전표 기표를 실행한다. ```abap 879| CASE P_UCOMM. 880| 881| WHEN 'REFRESH'. 882| PERFORM SET_DATA. 883| PERFORM MODIFY_PROCESS. 884| PERFORM SET_REFRESH. 885| 886| WHEN 'SAVE'. 887| PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM. 888| CHECK P_ANSWER = 'J'. 889| PERFORM SET_SAVE. 890| PERFORM SET_REFRESH. 891| 892| WHEN 'POST'. 893| * PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM. 894| * CHECK P_ANSWER = 'J'. 895| PERFORM SET_POST. 896| PERFORM SET_REFRESH. 897| 898| 899| ENDCASE. ``` - **EN**: Dispatches ALV user commands to refresh, confirm-and-save, or post routines for the e-tax invoice grid. - 호출(파서): SET_DATA, MODIFY_PROCESS, SET_REFRESH, POPUP_TO_CONFIRM, SET_SAVE, SET_REFRESH, SET_POST, SET_REFRESH - SAP 객체: POPUP_TO_CONFIRM - 업무 키워드: 사용자 명령, 재조회, 저장, 전표기표 - English: User Command, Refresh, Save, Post - 정의부(복사 시 함께 필요): [`P_ANSWER`](#decl-zfir0100top-37-p_answer) - 위치: `abap://ZFIR0100/ZFIR0100F02#L879-L899` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#USER_COMMAND#C1` ### FORM POPUP_TO_CONFIRM — `ZFIR0100F01` L265-L296 (32줄) *저장/전표기표 명령에 맞는 문구로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄워 사용자 응답을 받는 FORM 이다.* > 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] SAVE 는 '저장 하시겠습니까', POST 는 '전표기표 하시겠습니까' 문구를 준비해 POPUP_TO_CONFIRM_STEP 으로 확인 팝업을 띄우고 응답을 FP_ANSWER 에 받는다. ```abap 272| CASE SAVE_OK. 273| 274| WHEN 'SAVE'. 275| L_DEFAULTOPTION = 'Y'. 276| L_TEXTLINE2 = '저장 하시겠습니까 ?'. 277| 278| 279| WHEN 'POST'. 280| L_DEFAULTOPTION = 'Y'. 281| L_TEXTLINE2 = '전표기표 하시겠습니까 ?'. 282| 283| ENDCASE. 284| 285| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' 286| EXPORTING 287| DEFAULTOPTION = L_DEFAULTOPTION 288| TEXTLINE1 = L_TEXTLINE1 289| TEXTLINE2 = L_TEXTLINE2 290| TITEL = TEXT-101 291| CANCEL_DISPLAY = '' 292| IMPORTING 293| ANSWER = FP_ANSWER. ``` - **EN**: Prepares the question text by command (SAVE/POST) and calls POPUP_TO_CONFIRM_STEP to obtain the user's confirmation answer. - 호출(파서): POPUP_TO_CONFIRM_STEP - SAP 객체: POPUP_TO_CONFIRM_STEP - 업무 키워드: 확인 팝업, 저장 확인, 전표기표 확인 - English: Confirmation Popup, Posting Confirmation - 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0100t01-55-save_ok), [`L_DEFAULTOPTION`](#decl-zfir0100f01-267-l_defaultoption), [`L_TEXTLINE2`](#decl-zfir0100f01-267-l_textline2), [`L_TEXTLINE1`](#decl-zfir0100f01-267-l_textline1) - 위치: `abap://ZFIR0100/ZFIR0100F01#L272-L293` · confidence 0.95 · `ZFIR0100#ZFIR0100F01#FORM#POPUP_TO_CONFIRM#C1` ### FORM SET_SAVE — `ZFIR0100F01` L404-L492 (89줄) *ALV 에서 선택한 전자세금계산서 행의 전표번호를 수신 테이블에 저장하고 사용여부·상태 아이콘을 갱신한다.* > 이 unit 의 조각 2개가 57/89줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] ALV 그리드에서 현재 선택된 행을 가져오고, 선택이 없으면 '저장 할 행을 선택하세요' 메시지를 내고 중단한다. ```abap 426| CLEAR LT_ROWS[]. 427| CALL METHOD GO_GRID->GET_SELECTED_ROWS 428| IMPORTING 429| ET_INDEX_ROWS = LT_ROWS. 430| 431| IF LT_ROWS[] IS INITIAL. 432| MESSAGE S001 WITH '저장 할 행을 선택하세요.'. 433| EXIT. 434| ENDIF. ``` - **EN**: Fetches the selected ALV rows and aborts with a message when nothing is selected. - 호출(파서): GO_GRID->GET_SELECTED_ROWS - SAP 객체: CL_GUI_ALV_GRID, GET_SELECTED_ROWS - 업무 키워드: 행선택, 선택검증, 저장전검증, ALV선택 - English: row selection, selection check, pre-save validation, ALV - 정의부(복사 시 함께 필요): [`LT_ROWS`](#decl-zfir0100f01-421-lt_rows), [`GO_GRID`](#decl-zfir0100c01-124-go_grid) - 위치: `abap://ZFIR0100/ZFIR0100F01#L426-L434` · confidence 0.88 · `ZFIR0100#ZFIR0100F01#FORM#SET_SAVE#C1` #### [db_write] 선택한 행마다 전자세금계산서 상세 테이블 ZDTV3T_AP_EXT_D 에 생성된 전표번호·회계연도·처리자를 회사코드·발행일·사업장·계산서순번 키로 UPDATE 하고, 전표번호 유무에 따라 헤더 테이블 ZDTV3T_AP_EXT 의 사용여부(USE_DOC)와 화면 상태 아이콘을 갱신한다. ```abap 437| LOOP AT LT_ROWS INTO LS_ROWS WHERE ROWTYPE = SPACE. 438| CLEAR GT_MAIN. 439| 440| 441| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX. 442| IF SY-SUBRC = 0. 443| 444| CLEAR: GT_MAIN-SCOL, LT_SCOL, LT_SCOL[]. 445| 446| UPDATE ZDTV3T_AP_EXT_D SET: BELNR = GT_MAIN-BELNR 447| * BUDAT = LT_BKPF-BUDAT 448| * BLDAT = LT_BKPF-BLDAT 449| * BLART = LT_BKPF-BLART 450| * MWSKZ = ZDTV3S_DOC_LIFNR-MWSKZ 451| * DMBTR = IS_INVOICE-GRANDTOTAL 452| UNAME = SY-UNAME 453| ZGJAH = GT_MAIN-ZGJAH 454| WHERE BUKRS = GT_MAIN-BUKRS 455| AND ISSUE_DATE = GT_MAIN-ISSUE_DATE 456| AND BUPLA = GT_MAIN-BUPLA 457| AND INV_SEQ = GT_MAIN-INV_SEQ. 458| 459| IF GT_MAIN-BELNR IS INITIAL. 460| L_USE_DOC = ''. 461| GT_MAIN-ZICON = '@09@'. 462| 463| ELSE. 464| L_USE_DOC = 'X'. 465| GT_MAIN-ZICON = '@08@'. 466| 467| ENDIF. 468| 469| 470| UPDATE ZDTV3T_AP_EXT SET: USE_DOC = L_USE_DOC 471| WHERE BUKRS = GT_MAIN-BUKRS 472| AND ISSUE_DATE = GT_MAIN-ISSUE_DATE 473| AND BUPLA = GT_MAIN-BUPLA 474| AND INV_SEQ = GT_MAIN-INV_SEQ. 475| 476| IF SY-SUBRC = 0. 477| G_OK = 'X'. 478| 479| MODIFY GT_MAIN INDEX LS_ROWS-INDEX TRANSPORTING ZICON. 480| 481| ENDIF. 482| 483| ENDIF. 484| ENDLOOP. ``` - **EN**: For each selected row, updates the e-tax-invoice detail table with the posted document number and the header table's USE_DOC flag, refreshing the status icon. - 테이블(파서): read - / write [ZDTV3T_AP_EXT_D](/tables/ZDTV3T_AP_EXT_D.md), [ZDTV3T_AP_EXT](/tables/ZDTV3T_AP_EXT.md), [GT_MAIN](/tables/GT_MAIN.md) - SAP 객체: ZDTV3T_AP_EXT_D, ZDTV3T_AP_EXT, BELNR, USE_DOC, ISSUE_DATE, INV_SEQ - 업무 키워드: 전자세금계산서, 전표번호, 저장, 사용여부, 발행일, 사업장, 계산서순번, 상태아이콘 - English: electronic tax invoice, document number, save, use flag, issue date, business place, invoice sequence - 정의부(복사 시 함께 필요): [`LT_ROWS`](#decl-zfir0100f01-421-lt_rows), [`LS_ROWS`](#decl-zfir0100f01-422-ls_rows), [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [`LT_SCOL`](#decl-zfir0100f01-407-lt_scol), [`ZDTV3T_AP_EXT_D`](#decl-zfir0100top-5-zdtv3t_ap_ext_d), [`L_USE_DOC`](#decl-zfir0100f01-414-l_use_doc), [`ZDTV3T_AP_EXT`](#decl-zfir0100top-5-zdtv3t_ap_ext), [`G_OK`](#decl-zfir0100top-38-g_ok) - 위치: `abap://ZFIR0100/ZFIR0100F01#L437-L484` · confidence 0.85 · `ZFIR0100#ZFIR0100F01#FORM#SET_SAVE#C2` ### FORM SET_POST — `ZFIR0100F01` L335-L397 (63줄) *ALV 에서 선택된 미처리 전자세금계산서 행을 GT_TABLE 로 메모리에 EXPORT 한 뒤 전표 입력 화면 ZFIR0110_DOC 을 호출해 매입전표를 기표하는 FORM 이다.* > 이 unit 의 조각 2개가 36/63줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] GO_GRID->GET_SELECTED_ROWS 로 선택 행을 읽고 선택 행이 없으면 '전표기표 할 행을 선택하세요' 메시지 후 종료한다. ```abap 355| CALL METHOD GO_GRID->GET_SELECTED_ROWS 356| IMPORTING 357| ET_INDEX_ROWS = LT_ROWS. 358| 359| IF LT_ROWS[] IS INITIAL. 360| MESSAGE S001 WITH '전표기표 할 행을 선택하세요.'. 361| EXIT. 362| ENDIF. ``` - **EN**: Gets the selected ALV rows and exits with a message if none are selected for document posting. - 호출(파서): GO_GRID->GET_SELECTED_ROWS - SAP 객체: CL_GUI_ALV_GRID, GET_SELECTED_ROWS - 업무 키워드: 행 선택 검증, 전표기표 - English: Selected Rows, Validation - 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0100c01-124-go_grid), [`LT_ROWS`](#decl-zfir0100f01-348-lt_rows) - 위치: `abap://ZFIR0100/ZFIR0100F01#L355-L362` · confidence 0.9 · `ZFIR0100#ZFIR0100F01#FORM#SET_POST#C1` #### [interface] 선택된 각 행에 대해 이미 전표번호(BELNR)가 있으면 '이미 처리된 전표' 메시지로 건너뛰고, 아니면 해당 전자세금계산서 행을 GT_TABLE 에 담아 EXPORT TO MEMORY ID 'GT_TABLE' 후 CALL TRANSACTION 'ZFIR0110_DOC' 으로 매입전표 입력 화면을 호출한다. ```abap 365| LOOP AT LT_ROWS INTO LS_ROWS WHERE ROWTYPE = SPACE. 366| CLEAR GT_MAIN. 367| 368| 369| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX. 370| IF SY-SUBRC = 0. 371| 372| IF NOT GT_MAIN-BELNR IS INITIAL. 373| MESSAGE S001 WITH '이미 처리된 전표가 있습니다'. 374| CONTINUE. 375| ENDIF. 376| 377| CLEAR: GT_MAIN-SCOL, LT_SCOL, LT_SCOL[]. 378| CLEAR: GT_TABLE[], GT_TABLE. 379| 380| MOVE-CORRESPONDING GT_MAIN TO GT_TABLE. 381| APPEND GT_TABLE. 382| CLEAR GT_TABLE. 383| 384| ** 385| G_OK = 'X'. 386| EXPORT GT_TABLE TO MEMORY ID 'GT_TABLE'. 387| CALL TRANSACTION 'ZFIR0110_DOC'. 388| FREE GT_TABLE. 389| ** 390| 391| ENDIF. 392| ENDLOOP. ``` - **EN**: For each selected unposted e-tax invoice row, exports it to ABAP memory (ID GT_TABLE) and calls transaction ZFIR0110_DOC to create the AP document; rows already having BELNR are skipped. - 호출(파서): ZFIR0110_DOC - SAP 객체: ZFIR0110_DOC, GT_TABLE, GT_MAIN - 업무 키워드: 매입전표 기표, 전자세금계산서, 메모리 전달, 중복 처리 방지 - English: AP Document Posting, E-Tax Invoice, Call Transaction, ABAP Memory - 정의부(복사 시 함께 필요): [`LT_ROWS`](#decl-zfir0100f01-348-lt_rows), [`LS_ROWS`](#decl-zfir0100f01-349-ls_rows), [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [`LT_SCOL`](#decl-zfir0100f01-338-lt_scol), [`GT_TABLE`](#decl-zfir0100top-43-gt_table), [`G_OK`](#decl-zfir0100top-38-g_ok) - 위치: `abap://ZFIR0100/ZFIR0100F01#L365-L392` · confidence 0.9 · `ZFIR0100#ZFIR0100F01#FORM#SET_POST#C2` ### FORM HANDLE_DOUBLE_CLICK — `ZFIR0100F02` L1096-L1113 (18줄) *ALV 전표번호(BELNR) 셀 더블클릭 시 회사코드·회계연도·전표번호를 파라미터로 세팅해 FB03 전표 조회 트랜잭션을 호출하는 FORM 이다.* > 이 unit 의 조각 1개가 12/18줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [interface] 더블클릭한 행이 BELNR 컬럼이고 전표번호가 있으면 SET PARAMETER ID BUK/GJR/BLN 으로 회사코드·회계연도·전표번호를 넘겨 FB03(전표 조회)을 SKIP FIRST SCREEN 으로 호출한다. ```abap 1100| READ TABLE GT_MAIN INDEX P_ROW-INDEX. 1101| IF SY-SUBRC EQ 0. 1102| IF P_COLUMN-FIELDNAME = 'BELNR'. 1103| IF NOT GT_MAIN-BELNR IS INITIAL. 1104| SET PARAMETER ID 'BUK' FIELD P_BUKRS. "회사코드 1105| SET PARAMETER ID 'GJR' FIELD GT_MAIN-ZGJAH. "회계연도 1106| SET PARAMETER ID 'BLN' FIELD GT_MAIN-BELNR. "전표 1107| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. 1108| ENDIF. 1109| ENDIF. 1110| 1111| ENDIF. ``` - **EN**: On double-click of a filled BELNR cell, sets BUK/GJR/BLN parameters and calls transaction FB03 to display the FI document. - 호출(파서): FB03 - SAP 객체: FB03, GT_MAIN - 업무 키워드: 전표 조회, 더블클릭, 전표번호, 회계연도 - English: Display Document, FI Document, Hotspot Navigation - 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [`P_BUKRS`](#decl-zfir0100scr-6-p_bukrs) - 위치: `abap://ZFIR0100/ZFIR0100F02#L1100-L1111` · confidence 0.95 · `ZFIR0100#ZFIR0100F02#FORM#HANDLE_DOUBLE_CLICK#C1` ### FORM SET_POP_MESSAGE — `ZFIR0100F01` L194-L216 (23줄) *POPUP_TO_CONFIRM 으로 예/아니오 확인 팝업을 띄워 사용자 응답(P_ANSWER)을 돌려주는 FORM 이다.* > 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] POPUP_TO_CONFIRM 을 호출해 전달받은 질문 텍스트로 예/아니오 팝업을 띄우고 응답을 P_ANSWER 로 반환하며 오류 시 시스템 메시지를 출력한다. ```abap 197| CALL FUNCTION 'POPUP_TO_CONFIRM' 198| EXPORTING 199| TEXT_QUESTION = P_TEXT 200| TEXT_BUTTON_1 = '예(Yes)' 201| TEXT_BUTTON_2 = '아니오(No)' 202| DEFAULT_BUTTON = '1' 203| DISPLAY_CANCEL_BUTTON = '' 204| START_COLUMN = 25 205| START_ROW = 6 206| IMPORTING 207| ANSWER = P_ANSWER 208| EXCEPTIONS 209| TEXT_NOT_FOUND = 1 210| OTHERS = 2. 211| IF SY-SUBRC <> 0. 212| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 213| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 214| ENDIF. ``` - **EN**: Calls POPUP_TO_CONFIRM with the given question text to get a Yes/No answer and raises the system message on failure. - 호출(파서): POPUP_TO_CONFIRM - SAP 객체: POPUP_TO_CONFIRM - 업무 키워드: 확인 팝업, 예/아니오, 사용자 응답 - English: Confirmation Popup, Dialog - 정의부(복사 시 함께 필요): [`P_ANSWER`](#decl-zfir0100top-37-p_answer) - 위치: `abap://ZFIR0100/ZFIR0100F01#L197-L214` · confidence 0.95 · `ZFIR0100#ZFIR0100F01#FORM#SET_POP_MESSAGE#C1` ### FORM CHANG_LINE — `ZFIR0100F01` L496-L573 (78줄) *ALV 에서 선택된 행만 변경 가능하도록 전체 행의 CELLTAB 을 초기화한 뒤 선택 행에 전표번호(BELNR)·회계연도(ZGJAH) 셀만 편집 가능한 스타일을 적용하는 FORM 이다.* > 이 unit 의 조각 2개가 43/78줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] GO_GRID->GET_SELECTED_ROWS 로 선택 행을 가져오고 선택 행이 없으면 G_LINE 플래그를 세우고 '변경 할 행을 선택하세요' 메시지 후 종료한다. ```abap 526| CALL METHOD GO_GRID->GET_SELECTED_ROWS 527| IMPORTING 528| ET_INDEX_ROWS = LT_ROWS. 529| 530| IF LT_ROWS[] IS INITIAL. 531| G_LINE = 'X'. 532| MESSAGE S001 WITH '변경 할 행을 선택하세요.'. 533| EXIT. 534| ENDIF. ``` - **EN**: Reads the selected ALV rows via GET_SELECTED_ROWS and exits with a message if no row is selected. - 호출(파서): GO_GRID->GET_SELECTED_ROWS - SAP 객체: CL_GUI_ALV_GRID, GET_SELECTED_ROWS - 업무 키워드: 행 선택 검증, 선택 행, 메시지 - English: Selected Rows, ALV Grid, Validation - 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0100c01-124-go_grid), [`LT_ROWS`](#decl-zfir0100f01-518-lt_rows), [`G_LINE`](#decl-zfir0100top-39-g_line) - 위치: `abap://ZFIR0100/ZFIR0100F01#L526-L534` · confidence 0.9 · `ZFIR0100#ZFIR0100F01#FORM#CHANG_LINE#C1` #### [other] GT_MAIN 전체 행의 CELLTAB 을 지운 뒤 선택된 행에 대해서만 SET_CELLTAB('CHAN') 으로 전표번호·회계연도 셀을 편집 가능하게 하는 셀 스타일을 삽입해 행 단위 편집 권한을 부여한다. ```abap 537| LOOP AT GT_MAIN. 538| LV_TABIX = SY-TABIX. 539| CLEAR: GT_MAIN-CELLTAB. 540| MODIFY GT_MAIN INDEX LV_TABIX TRANSPORTING CELLTAB. 541| CLEAR GT_MAIN. 542| ENDLOOP. 543| 544| 545| 546| LOOP AT LT_ROWS INTO LS_ROWS WHERE ROWTYPE = SPACE. 547| CLEAR GT_MAIN. 548| 549| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX. 550| IF SY-SUBRC = 0. 551| 552| CLEAR: GT_MAIN-CELLTAB, 553| LS_MAIN, LT_CELLTAB, LT_CELLTAB[], LV_UCOMM. 554| 555| MOVE-CORRESPONDING GT_MAIN TO LS_MAIN. 556| 557| IF LV_UCOMM IS INITIAL. 558| LV_UCOMM = 'CHAN'. " GV_UCOMM. 559| ENDIF. 560| 561| * SETTING COLOR 562| PERFORM SET_CELLTAB USING LS_MAIN 563| LV_UCOMM 564| CHANGING LT_CELLTAB. 565| 566| INSERT LINES OF LT_CELLTAB INTO TABLE GT_MAIN-CELLTAB. 567| MODIFY GT_MAIN INDEX LS_ROWS-INDEX. 568| ENDIF. 569| 570| ENDLOOP. ``` - **EN**: Clears CELLTAB for all rows and, for each selected row, builds the CHAN cell style via SET_CELLTAB so only BELNR/ZGJAH cells become editable. - 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) - 호출(파서): SET_CELLTAB - SAP 객체: LVC_T_STYL - 업무 키워드: 셀 편집 스타일, 선택 행 편집, 전표번호, 회계연도 - English: CELLTAB, Editable Cell, Document Number - 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [`LV_TABIX`](#decl-zfir0100f01-503-lv_tabix), [`LT_ROWS`](#decl-zfir0100f01-518-lt_rows), [`LS_ROWS`](#decl-zfir0100f01-519-ls_rows), [`LS_MAIN`](#decl-zfir0100f01-498-ls_main), [`LT_CELLTAB`](#decl-zfir0100f01-499-lt_celltab), [`LV_UCOMM`](#decl-zfir0100f01-500-lv_ucomm) - 위치: `abap://ZFIR0100/ZFIR0100F01#L537-L570` · confidence 0.8 · `ZFIR0100#ZFIR0100F01#FORM#CHANG_LINE#C2` ### FORM SET_CELLTAB — `ZFIR0100F02` L88-L124 (37줄) *변경(CHAN) 모드에서 필드카탈로그 전 컬럼을 입력 불가로 두되 전표번호(BELNR)·회계연도(ZGJAH) 셀만 입력 가능하게 CELLTAB 스타일을 만드는 FORM 이다.* > 이 unit 의 조각 1개가 24/37줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [other] CHAN 명령일 때 필드카탈로그의 각 컬럼을 MC_STYLE_DISABLED 로 잠그고 BELNR·ZGJAH 컬럼만 MC_STYLE_ENABLED 로 열어 사용자가 수동 전표번호·회계연도만 입력할 수 있도록 CELLTAB 을 구성한다. ```abap 99| LOOP AT GT_FCAT1 INTO GS_FCAT. 100| CLEAR LS_CELLTAB. 101| CASE P_UCOMM. 102| 103| WHEN 'CHAN'. 104| 105| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. 106| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME. 107| LS_CELLTAB-STYLE = LV_MODE. 108| 109| IF GS_FCAT-FIELDNAME = 'BELNR' OR 110| GS_FCAT-FIELDNAME = 'ZGJAH'. 111| 112| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. 113| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME. 114| LS_CELLTAB-STYLE = LV_MODE. 115| ENDIF. 116| 117| ENDCASE. 118| 119| 120| INSERT LS_CELLTAB INTO TABLE P_CELLTAB. 121| 122| ENDLOOP. ``` - **EN**: Builds the CELLTAB style table so that in CHAN mode only the BELNR and ZGJAH cells are enabled for input while all other columns are disabled. - 호출(파서): CL_GUI_ALV_GRID=>MC_STYLE_DISABLED, CL_GUI_ALV_GRID=>MC_STYLE_ENABLED - SAP 객체: CL_GUI_ALV_GRID, LVC_T_STYL - 업무 키워드: 셀 입력 제어, 전표번호, 회계연도, 편집 가능 컬럼 - English: CELLTAB, Cell Style, Editable Column - 정의부(복사 시 함께 필요): [`GT_FCAT1`](#decl-zfir0100t01-35-gt_fcat1), [`GS_FCAT`](#decl-zfir0100t01-34-gs_fcat), [`LS_CELLTAB`](#decl-zfir0100f02-92-ls_celltab), [`LV_MODE`](#decl-zfir0100f02-93-lv_mode) - 위치: `abap://ZFIR0100/ZFIR0100F02#L99-L122` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#SET_CELLTAB#C1` ### FORM RUN_DISPLAY_ALV — `ZFIR0100F02` L703-L725 (23줄) *화면 0100 용 그리드(GO_GRID)와 GT_MAIN 을 할당하고 이벤트 등록 후 SET_TABLE_FOR_FIRST_DISPLAY 로 편집 가능한 ALV 를 최초 표시한다.* > 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [output] 화면번호에 따라 그리드 객체와 GT_MAIN 을 필드심볼에 할당하고 SET_EVENT_UCOMM 이벤트 등록 후 CL_GUI_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY 로 레이아웃·변형·툴바제외·정렬을 적용해 ALV 를 표시한다. ```abap 705| CASE P_VALUE. 706| WHEN '0100'. 707| ASSIGN: GO_GRID TO , 708| GT_MAIN[] TO . 709| ENDCASE. 710| 711| PERFORM SET_EVENT_UCOMM. 712| 713| CALL METHOD ->SET_TABLE_FOR_FIRST_DISPLAY 714| EXPORTING 715| I_DEFAULT = 'X' 716| IS_LAYOUT = GS_LAYOUT 717| IS_VARIANT = GS_VARIANT 718| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE 719| I_SAVE = 'A' 720| CHANGING 721| IT_OUTTAB = 722| IT_FIELDCATALOG = 723| IT_SORT = GT_SORT. ``` - **EN**: Assigns the grid and GT_MAIN by screen number, registers events and calls SET_TABLE_FOR_FIRST_DISPLAY with layout, variant, toolbar exclusions and sort to display the ALV grid. - 호출(파서): SET_EVENT_UCOMM, ->SET_TABLE_FOR_FIRST_DISPLAY - SAP 객체: CL_GUI_ALV_GRID, SET_TABLE_FOR_FIRST_DISPLAY - 업무 키워드: ALV 표시, 그리드, 레이아웃, 변형 - English: ALV Grid, Layout Variant, First Display - 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0100c01-124-go_grid), [``](#decl-zfir0100t01-86--fs_grid-), [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [``](#decl-zfir0100t01-87--fs_table-), [`GS_LAYOUT`](#decl-zfir0100t01-30-gs_layout), [`GS_VARIANT`](#decl-zfir0100t01-31-gs_variant), [`GT_EXCLUDE`](#decl-zfir0100t01-33-gt_exclude), [``](#decl-zfir0100t01-84--gt_field-), [`GT_SORT`](#decl-zfir0100t01-37-gt_sort) - 위치: `abap://ZFIR0100/ZFIR0100F02#L705-L723` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#RUN_DISPLAY_ALV#C1` ### FORM SET_CHANGE — `ZFIR0100F02` L912-L953 (42줄) *변경(CHAN) 명령 시 선택 행 상태에 따라 그리드 편집 가능 여부를 토글하고 잠금(SET_LOCK)을 설정하는 FORM 이다.* > 이 unit 의 조각 2개가 12/42줄(29%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] CHANG_LINE 으로 선택 행의 변경 가능 여부(G_LINE)를 판정한 뒤 변경 가능하면 GO_GRID->SET_READY_FOR_INPUT 으로 편집 모드를 켜고 아니면 끈다. ```abap 914| PERFORM CHANG_LINE. 915| 916| IF G_LINE = ''. 917| CALL METHOD GO_GRID->SET_READY_FOR_INPUT 918| EXPORTING 919| I_READY_FOR_INPUT = 1. 920| ELSE. 921| CALL METHOD GO_GRID->SET_READY_FOR_INPUT 922| EXPORTING 923| I_READY_FOR_INPUT = 0. 924| ENDIF. ``` - **EN**: Determines via CHANG_LINE whether the selected rows are changeable and toggles ALV edit mode with SET_READY_FOR_INPUT accordingly. - 호출(파서): CHANG_LINE, GO_GRID->SET_READY_FOR_INPUT, GO_GRID->SET_READY_FOR_INPUT - SAP 객체: CL_GUI_ALV_GRID, SET_READY_FOR_INPUT - 업무 키워드: 편집 모드, 변경 가능 여부, 행 선택 - English: Edit Mode, ALV Grid, Ready For Input - 정의부(복사 시 함께 필요): [`G_LINE`](#decl-zfir0100top-39-g_line), [`GO_GRID`](#decl-zfir0100c01-124-go_grid) - 위치: `abap://ZFIR0100/ZFIR0100F02#L914-L924` · confidence 0.8 · `ZFIR0100#ZFIR0100F02#FORM#SET_CHANGE#C1` #### [control_flow] 편집 진입 시 SET_LOCK 으로 데이터 잠금(Enqueue)을 걸어 동시 수정을 방지한다. ```abap 951| PERFORM SET_LOCK USING GV_UCOMM. ``` - **EN**: Calls SET_LOCK to enqueue the data when entering change mode to prevent concurrent edits. - 호출(파서): SET_LOCK - 업무 키워드: 잠금, 동시 수정 방지 - English: Enqueue, Lock - 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zfir0100t01-57-gv_ucomm) - 위치: `abap://ZFIR0100/ZFIR0100F02#L951-L951` · confidence 0.7 · `ZFIR0100#ZFIR0100F02#FORM#SET_CHANGE#C2` ### MODULE USER_COMMAND_0100_EXIT INPUT — `ZFIR0100I01` L7-L37 (31줄) *화면 0100 종료 명령 처리 시 미저장 변경분 확인 팝업을 띄우고 잠금을 해제한 뒤 화면을 빠져나가는 EXIT 모듈이다.* > 이 unit 의 조각 2개가 19/31줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] 변경 플래그(GV_CHK)가 있으면 SET_POP_MESSAGE 확인 팝업을 띄워 사용자가 확인하면 CHK_DATA 로 데이터 검증을 수행하고 오류가 있으면 종료를 막는다. ```abap 11| IF GV_CHK IS NOT INITIAL. 12| PERFORM SET_POP_MESSAGE USING TEXT-100 13| CHANGING GV_ANSWER. 14| IF GV_ANSWER = '1'. 15| PERFORM CHK_DATA. 16| ELSE. 17| MESSAGE S001 WITH TEXT-101. 18| ENDIF. 19| 20| CHECK GV_ERR IS INITIAL. 21| ENDIF. ``` - **EN**: If unsaved changes exist, shows a confirmation popup and runs CHK_DATA validation, blocking exit on error. - 호출(파서): SET_POP_MESSAGE, CHK_DATA - 업무 키워드: 종료 확인, 변경 확인, 데이터 검증 - English: Exit Confirmation, Validation - 정의부(복사 시 함께 필요): [`GV_CHK`](#decl-zfir0100t01-61-gv_chk), [`GV_ANSWER`](#decl-zfir0100t01-60-gv_answer), [`GV_ERR`](#decl-zfir0100t01-59-gv_err) - 위치: `abap://ZFIR0100/ZFIR0100I01#L11-L21` · confidence 0.8 · `ZFIR0100#ZFIR0100I01#MODULE#USER_COMMAND_0100_EXIT_INPUT#C1` #### [control_flow] SET_LOCK 으로 잠금(Enqueue)을 해제한 뒤 BACK/EXIT 은 화면 0, CANCEL 은 프로그램 종료로 분기한다. ```abap 28| PERFORM SET_LOCK USING 'UNLOCK'. 29| 30| CASE SAVE_OK. 31| WHEN '&F03' OR '&F15'. 32| LEAVE TO SCREEN 0. 33| WHEN '&F12'. 34| LEAVE PROGRAM. 35| ENDCASE. ``` - **EN**: Releases the lock via SET_LOCK and leaves the screen or program according to the exit function code. - 호출(파서): SET_LOCK - 업무 키워드: 잠금 해제, 화면 종료 - English: Dequeue, Leave Screen - 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0100t01-55-save_ok) - 위치: `abap://ZFIR0100/ZFIR0100I01#L28-L35` · confidence 0.85 · `ZFIR0100#ZFIR0100I01#MODULE#USER_COMMAND_0100_EXIT_INPUT#C2` ### MODULE USER_COMMAND_0100 INPUT — `ZFIR0100I01` L45-L89 (45줄) *화면 0100 의 사용자 명령(변경·재조회·저장·전기)을 받아 해당 처리 FORM 으로 분기하는 PAI 모듈이다.* > 이 unit 의 조각 1개가 28/45줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] OK_CODE(CHAN/REFRESH/SAVE/POST)에 따라 전자세금계산서 그리드 변경 반영(SET_CHANGE), 재조회(SET_DATA·MODIFY_PROCESS), 확인 팝업 후 저장(SET_SAVE), 매입전표 전기(SET_POST) 를 분기 호출한다. ```abap 60| CASE SAVE_OK. 61| WHEN 'CHAN'. 62| PERFORM SET_CHANGE. " CHANGE 63| 64| 65| WHEN 'REFRESH'. 66| PERFORM SET_DATA. 67| PERFORM MODIFY_PROCESS. 68| PERFORM SET_REFRESH. 69| 70| WHEN 'SAVE'. 71| PERFORM POPUP_TO_CONFIRM USING P_ANSWER SAVE_OK. 72| CHECK P_ANSWER = 'J'. 73| PERFORM SET_SAVE. 74| PERFORM SET_REFRESH. 75| 76| WHEN 'POST'. 77| * PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM. 78| * CHECK P_ANSWER = 'J'. 79| PERFORM SET_POST. 80| 81| IF G_OK = 'X'. 82| PERFORM SET_DATA. 83| PERFORM MODIFY_PROCESS. 84| PERFORM SET_REFRESH. 85| ENDIF. 86| 87| ENDCASE. ``` - **EN**: Dispatches screen 0100 user commands to change, refresh, save (after POPUP_TO_CONFIRM) and post routines for the e-tax invoice AP document grid. - 호출(파서): SET_CHANGE, SET_DATA, MODIFY_PROCESS, SET_REFRESH, POPUP_TO_CONFIRM, SET_SAVE, SET_REFRESH, SET_POST, SET_DATA, MODIFY_PROCESS, SET_REFRESH - SAP 객체: POPUP_TO_CONFIRM - 업무 키워드: 사용자 명령, 저장, 전기, 재조회, 확인 팝업 - English: User Command, PAI, Posting, Save - 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0100t01-55-save_ok), [`P_ANSWER`](#decl-zfir0100top-37-p_answer), [`G_OK`](#decl-zfir0100top-38-g_ok) - 위치: `abap://ZFIR0100/ZFIR0100I01#L60-L87` · confidence 0.9 · `ZFIR0100#ZFIR0100I01#MODULE#USER_COMMAND_0100_INPUT#C1` ## 정의부 (107건) 로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. ### `ZFIR0100C01` (18건) #### LCL_EVENT_RECEIVER — class · L7-L52 {#decl-zfir0100c01-7-lcl_event_receiver} ```abap CLASS LCL_EVENT_RECEIVER DEFINITION . PUBLIC SECTION . * 변경 필드 값처리 METHODS : HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID IMPORTING ER_DATA_CHANGED. * ON F4처리 METHODS : HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID IMPORTING SENDER E_FIELDNAME E_FIELDVALUE ES_ROW_NO ER_EVENT_DATA ET_BAD_CELLS E_DISPLAY. * TOOLBAR METHODS: HANDLE_ON_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING E_OBJECT E_INTERACTIVE SENDER. * USER_COMMAND METHODS: HANDLE_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING E_UCOMM. * DOUBLE_CLICK METHODS: HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING SENDER E_ROW E_COLUMN ES_ROW_NO. ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION ``` #### GO_CUSTOM — data · L110-L110 {#decl-zfir0100c01-110-go_custom} ```abap DATA: GO_CUSTOM TYPE REF TO CL_GUI_CUSTOM_CONTAINER. ``` #### GO_CUSTOM2 — data · L111-L111 {#decl-zfir0100c01-111-go_custom2} ```abap DATA: GO_CUSTOM2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. ``` #### GO_DOCKING — data · L113-L113 {#decl-zfir0100c01-113-go_docking} ```abap DATA: GO_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER. ``` #### GO_DOCKING2 — data · L114-L114 {#decl-zfir0100c01-114-go_docking2} ```abap DATA: GO_DOCKING2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. ``` #### GO_SPLITTER — data · L116-L116 {#decl-zfir0100c01-116-go_splitter} ```abap DATA: GO_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER. ``` #### GO_SPLITTER2 — data · L117-L117 {#decl-zfir0100c01-117-go_splitter2} ```abap DATA: GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. ``` #### GO_GRID — data · L124-L124 {#decl-zfir0100c01-124-go_grid} ```abap DATA: GO_GRID TYPE REF TO CL_GUI_ALV_GRID. ``` #### GO_GRID2 — data · L125-L125 {#decl-zfir0100c01-125-go_grid2} ```abap DATA: GO_GRID2 TYPE REF TO CL_GUI_ALV_GRID. ``` #### GO_GRID3 — data · L126-L126 {#decl-zfir0100c01-126-go_grid3} ```abap DATA: GO_GRID3 TYPE REF TO CL_GUI_ALV_GRID. ``` #### GO_GRID4 — data · L127-L127 {#decl-zfir0100c01-127-go_grid4} ```abap DATA: GO_GRID4 TYPE REF TO CL_GUI_ALV_GRID. ``` #### GO_GRID5 — data · L128-L128 {#decl-zfir0100c01-128-go_grid5} ```abap DATA: GO_GRID5 TYPE REF TO CL_GUI_ALV_GRID. ``` #### GO_CON — data · L130-L130 {#decl-zfir0100c01-130-go_con} ```abap DATA: GO_CON TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CON2 — data · L131-L131 {#decl-zfir0100c01-131-go_con2} ```abap DATA: GO_CON2 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CON3 — data · L132-L132 {#decl-zfir0100c01-132-go_con3} ```abap DATA: GO_CON3 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CON4 — data · L133-L133 {#decl-zfir0100c01-133-go_con4} ```abap DATA: GO_CON4 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CON5 — data · L134-L134 {#decl-zfir0100c01-134-go_con5} ```abap DATA: GO_CON5 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_EVENT — data · L136-L136 {#decl-zfir0100c01-136-go_event} ```abap DATA: GO_EVENT TYPE REF TO LCL_EVENT_RECEIVER. ``` ### `ZFIR0100SCR` (7건) #### P_BUKRS — parameter · L6-L8 {#decl-zfir0100scr-6-p_bukrs} ```abap PARAMETERS : P_BUKRS TYPE T001-BUKRS DEFAULT 'KR01' MEMORY ID BUK OBLIGATORY. ``` #### P_SPMON — parameter · L9-L10 {#decl-zfir0100scr-9-p_spmon} ```abap PARAMETERS: P_SPMON TYPE SPMON DEFAULT SY-DATUM+0(6) OBLIGATORY. ``` #### S_SU_ID — select-option · L12-L12 {#decl-zfir0100scr-12-s_su_id} ```abap SELECT-OPTIONS: S_SU_ID FOR LFA1-LIFNR. ``` #### S_EMAIL — select-option · L13-L13 {#decl-zfir0100scr-13-s_email} ```abap SELECT-OPTIONS: S_EMAIL FOR ZDTV3T_AP_HEAD-IP_EMAIL1. ``` #### P_R1 — parameter · L22-L22 {#decl-zfir0100scr-22-p_r1} ```abap PARAMETERS: P_R1 RADIOBUTTON GROUP G1 . ``` #### P_R2 — parameter · L25-L25 {#decl-zfir0100scr-25-p_r2} ```abap PARAMETERS: P_R2 RADIOBUTTON GROUP G1. ``` #### P_R3 — parameter · L28-L28 {#decl-zfir0100scr-28-p_r3} ```abap PARAMETERS: P_R3 RADIOBUTTON GROUP G1. ``` ### `ZFIR0100T01` (39건) #### IT_EXCEL — data · L9-L9 {#decl-zfir0100t01-9-it_excel} ```abap DATA: IT_EXCEL LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. ``` #### GT_EXCEL — data · L13-L22 {#decl-zfir0100t01-13-gt_excel} ```abap DATA: BEGIN OF GT_EXCEL OCCURS 0, TRDAT(10), BANK_COD3(10), BANKN(20), OUTAMT(20), INAMT(20), ZBALAMT(20), NAME(20), SGTXT(20), END OF GT_EXCEL. ``` #### IT_ZTRT0002 — data · L25-L27 {#decl-zfir0100t01-25-it_ztrt0002} ```abap DATA: BEGIN OF IT_ZTRT0002 OCCURS 0. INCLUDE STRUCTURE ZTRT0002. DATA END OF IT_ZTRT0002. ``` #### GS_LAYOUT — data · L30-L30 {#decl-zfir0100t01-30-gs_layout} ```abap DATA: GS_LAYOUT TYPE LVC_S_LAYO. ``` #### GS_VARIANT — data · L31-L31 {#decl-zfir0100t01-31-gs_variant} ```abap DATA: GS_VARIANT TYPE DISVARIANT. ``` #### GX_VARIANT — data · L32-L32 {#decl-zfir0100t01-32-gx_variant} ```abap DATA: GX_VARIANT TYPE DISVARIANT. ``` #### GT_EXCLUDE — data · L33-L33 {#decl-zfir0100t01-33-gt_exclude} ```abap DATA: GT_EXCLUDE TYPE UI_FUNCTIONS. ``` #### GS_FCAT — data · L34-L34 {#decl-zfir0100t01-34-gs_fcat} ```abap DATA: GS_FCAT TYPE LVC_S_FCAT. ``` #### GT_FCAT1 — data · L35-L35 {#decl-zfir0100t01-35-gt_fcat1} ```abap DATA: GT_FCAT1 TYPE LVC_T_FCAT. ``` #### GS_SORT — data · L36-L36 {#decl-zfir0100t01-36-gs_sort} ```abap DATA: GS_SORT TYPE LVC_S_SORT. ``` #### GT_SORT — data · L37-L37 {#decl-zfir0100t01-37-gt_sort} ```abap DATA: GT_SORT TYPE LVC_T_SORT. ``` #### GS_GLAY — data · L38-L38 {#decl-zfir0100t01-38-gs_glay} ```abap DATA: GS_GLAY TYPE LVC_S_GLAY. ``` #### GT_HEAD — data · L39-L39 {#decl-zfir0100t01-39-gt_head} ```abap DATA: GT_HEAD TYPE LVC_T_HEAD. ``` #### GS_HEAD — data · L40-L40 {#decl-zfir0100t01-40-gs_head} ```abap DATA: GS_HEAD TYPE LVC_S_HEAD. ``` #### GS_EVENT — data · L41-L41 {#decl-zfir0100t01-41-gs_event} ```abap DATA: GS_EVENT TYPE LVC_S_EVTS. ``` #### GT_EVENT — data · L42-L42 {#decl-zfir0100t01-42-gt_event} ```abap DATA: GT_EVENT TYPE LVC_T_EVTS. ``` #### GS_STBL — data · L43-L43 {#decl-zfir0100t01-43-gs_stbl} ```abap DATA: GS_STBL TYPE LVC_S_STBL. " Refresh stability. ``` #### G_REPID — data · L45-L45 {#decl-zfir0100t01-45-g_repid} ```abap DATA: G_REPID TYPE SY-REPID. ``` #### G_TABNAME — data · L46-L46 {#decl-zfir0100t01-46-g_tabname} ```abap DATA: G_TABNAME TYPE SLIS_TABNAME. ``` #### GV_EXIT — data · L47-L47 {#decl-zfir0100t01-47-gv_exit} ```abap DATA: GV_EXIT TYPE C. ``` #### OK_CODE — data · L54-L54 {#decl-zfir0100t01-54-ok_code} ```abap DATA: OK_CODE TYPE SY-UCOMM. ``` #### SAVE_OK — data · L55-L55 {#decl-zfir0100t01-55-save_ok} ```abap DATA: SAVE_OK TYPE SY-UCOMM. ``` #### GV_UCOMM — data · L57-L57 {#decl-zfir0100t01-57-gv_ucomm} ```abap DATA: GV_UCOMM TYPE SY-UCOMM. " COMMAND ``` #### GS_MSG — data · L58-L58 {#decl-zfir0100t01-58-gs_msg} ```abap DATA: GS_MSG LIKE FIMSG. " MESSSAGE ``` #### GV_ERR — data · L59-L59 {#decl-zfir0100t01-59-gv_err} ```abap DATA: GV_ERR TYPE C. " ERROR ``` #### GV_ANSWER — data · L60-L60 {#decl-zfir0100t01-60-gv_answer} ```abap DATA: GV_ANSWER TYPE C. " MESSAGE ``` #### GV_CHK — data · L61-L61 {#decl-zfir0100t01-61-gv_chk} ```abap DATA: GV_CHK TYPE C. " CHANGE ``` #### GV_LOCK — data · L62-L62 {#decl-zfir0100t01-62-gv_lock} ```abap DATA: GV_LOCK TYPE C. ``` #### GV_MNAME — data · L63-L63 {#decl-zfir0100t01-63-gv_mname} ```abap DATA: GV_MNAME TYPE STRING. ``` #### GS_F4 — data · L65-L65 {#decl-zfir0100t01-65-gs_f4} ```abap DATA: GS_F4 TYPE LVC_S_F4. " F4 ## ## ``` #### GT_F4 — data · L66-L66 {#decl-zfir0100t01-66-gt_f4} ```abap DATA: GT_F4 TYPE LVC_T_F4. ``` #### GC_YEL — constants · L73-L73 {#decl-zfir0100t01-73-gc_yel} ```abap CONSTANTS: GC_YEL(4) VALUE '@09@'. " ICON_LED_YELLOW ``` #### GC_GRE — constants · L74-L74 {#decl-zfir0100t01-74-gc_gre} ```abap CONSTANTS: GC_GRE(4) VALUE '@08@'. " ICON_LED_GREEN ``` #### GC_OUT — constants · L75-L75 {#decl-zfir0100t01-75-gc_out} ```abap CONSTANTS: GC_OUT(4) VALUE '@EB@'. " ICON_LED_LIGHT_OUT ``` #### GC_RED — constants · L76-L76 {#decl-zfir0100t01-76-gc_red} ```abap CONSTANTS: GC_RED(4) VALUE '@0A@'. " ICON_LED_RED ``` #### — field-symbol · L83-L83 {#decl-zfir0100t01-83--gs_field-} ```abap FIELD-SYMBOLS: TYPE LVC_S_FCAT. ``` #### — field-symbol · L84-L84 {#decl-zfir0100t01-84--gt_field-} ```abap FIELD-SYMBOLS: TYPE LVC_T_FCAT. ``` #### — field-symbol · L86-L86 {#decl-zfir0100t01-86--fs_grid-} ```abap FIELD-SYMBOLS: TYPE REF TO CL_GUI_ALV_GRID. ``` #### — field-symbol · L87-L87 {#decl-zfir0100t01-87--fs_table-} ```abap FIELD-SYMBOLS: TYPE TABLE. ``` ### `ZFIR0100TOP` (20건) #### ZDTV3T_AP_EXT — tables · L5-L5 {#decl-zfir0100top-5-zdtv3t_ap_ext} ```abap TABLES: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D. ``` #### ZDTV3T_AP_EXT_D — tables · L5-L5 {#decl-zfir0100top-5-zdtv3t_ap_ext_d} ```abap TABLES: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D. ``` #### ZDTV3T_AP_HEAD — tables · L5-L5 {#decl-zfir0100top-5-zdtv3t_ap_head} ```abap TABLES: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D. ``` #### BKPF — tables · L6-L6 {#decl-zfir0100top-6-bkpf} ```abap TABLES: BKPF, LFA1. ``` #### LFA1 — tables · L6-L6 {#decl-zfir0100top-6-lfa1} ```abap TABLES: BKPF, LFA1. ``` #### ICON — type-pool · L8-L8 {#decl-zfir0100top-8-icon} ```abap TYPE-POOLS: SLIS, ICON. ``` #### SLIS — type-pool · L8-L8 {#decl-zfir0100top-8-slis} ```abap TYPE-POOLS: SLIS, ICON. ``` #### IT_ZDTV3T_AP_HEAD — data · L11-L18 {#decl-zfir0100top-11-it_zdtv3t_ap_head} ```abap DATA: BEGIN OF IT_ZDTV3T_AP_HEAD OCCURS 0. INCLUDE STRUCTURE ZDTV3T_AP_HEAD. DATA: BELNR LIKE ZDTV3T_AP_EXT_D-BELNR. DATA: ZGJAH LIKE ZDTV3T_AP_EXT_D-ZGJAH. DATA: USE_DOC LIKE ZDTV3T_AP_EXT-USE_DOC. DATA END OF IT_ZDTV3T_AP_HEAD. ``` #### GT_MAIN — data · L21-L31 {#decl-zfir0100top-21-gt_main} ```abap DATA: BEGIN OF GT_MAIN OCCURS 0, MARK LIKE ICON-STATUS, ZICON(4). INCLUDE STRUCTURE ZDTV3T_AP_HEAD. DATA: BELNR LIKE BKPF-BELNR, ZGJAH LIKE BKPF-GJAHR. DATA: CELLTAB TYPE LVC_T_STYL, SCOL TYPE LVC_T_SCOL, END OF GT_MAIN. ``` #### GT_IMSI — data · L35-L35 {#decl-zfir0100top-35-gt_imsi} ```abap DATA: GT_IMSI LIKE TABLE OF GT_MAIN WITH HEADER LINE. ``` #### P_ANSWER — data · L37-L37 {#decl-zfir0100top-37-p_answer} ```abap DATA: P_ANSWER. ``` #### G_OK — data · L38-L38 {#decl-zfir0100top-38-g_ok} ```abap DATA: G_OK. ``` #### G_LINE — data · L39-L39 {#decl-zfir0100top-39-g_line} ```abap DATA: G_LINE. ``` #### TMP_MAIN — data · L41-L41 {#decl-zfir0100top-41-tmp_main} ```abap DATA: TMP_MAIN LIKE TABLE OF GT_MAIN WITH HEADER LINE. ``` #### GT_TABLE — data · L43-L43 {#decl-zfir0100top-43-gt_table} ```abap DATA: GT_TABLE LIKE TABLE OF GT_MAIN WITH HEADER LINE. ``` #### GT_ANY — data · L45-L45 {#decl-zfir0100top-45-gt_any} ```abap DATA GT_ANY TYPE REF TO DATA. ``` #### I_TABNAM — data · L46-L46 {#decl-zfir0100top-46-i_tabnam} ```abap DATA I_TABNAM TYPE TABNAME16. ``` #### S_BUDAT — ranges · L48-L48 {#decl-zfir0100top-48-s_budat} ```abap RANGES: S_BUDAT FOR BKPF-BUDAT. ``` #### — field-symbol · L51-L51 {#decl-zfir0100top-51--fs_s-} ```abap FIELD-SYMBOLS: TYPE ANY. ``` #### — field-symbol · L52-L52 {#decl-zfir0100top-52--fs_t-} ```abap FIELD-SYMBOLS: TYPE ANY TABLE. ``` ### `ZFIR0100F01` (18건) #### L_DOC1 — data · unit 로컬 · L96-L96 {#decl-zfir0100f01-96-l_doc1} ```abap DATA: L_DOC1, L_DOC2. ``` #### L_DOC2 — data · unit 로컬 · L96-L96 {#decl-zfir0100f01-96-l_doc2} ```abap DATA: L_DOC1, L_DOC2. ``` #### L_DEFAULTOPTION — data · unit 로컬 · L267-L267 {#decl-zfir0100f01-267-l_defaultoption} ```abap DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). ``` #### L_TEXTLINE2 — data · unit 로컬 · L267-L267 {#decl-zfir0100f01-267-l_textline2} ```abap DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). ``` #### L_TEXTLINE1 — data · unit 로컬 · L267-L267 {#decl-zfir0100f01-267-l_textline1} ```abap DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). ``` #### LT_SCOL — data · unit 로컬 · L338-L338 {#decl-zfir0100f01-338-lt_scol} ```abap DATA: LT_SCOL TYPE LVC_T_SCOL. ``` #### LT_ROWS — data · unit 로컬 · L348-L348 {#decl-zfir0100f01-348-lt_rows} ```abap DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행 ``` #### LS_ROWS — data · unit 로컬 · L349-L349 {#decl-zfir0100f01-349-ls_rows} ```abap DATA: LS_ROWS TYPE LVC_S_ROW. ``` #### LT_SCOL — data · unit 로컬 · L407-L407 {#decl-zfir0100f01-407-lt_scol} ```abap DATA: LT_SCOL TYPE LVC_T_SCOL. ``` #### L_USE_DOC — data · unit 로컬 · L414-L414 {#decl-zfir0100f01-414-l_use_doc} ```abap DATA: L_USE_DOC. ``` #### LT_ROWS — data · unit 로컬 · L421-L421 {#decl-zfir0100f01-421-lt_rows} ```abap DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행 ``` #### LS_ROWS — data · unit 로컬 · L422-L422 {#decl-zfir0100f01-422-ls_rows} ```abap DATA: LS_ROWS TYPE LVC_S_ROW. ``` #### LS_MAIN — data · unit 로컬 · L498-L498 {#decl-zfir0100f01-498-ls_main} ```abap DATA: LS_MAIN LIKE GT_MAIN. ``` #### LT_CELLTAB — data · unit 로컬 · L499-L499 {#decl-zfir0100f01-499-lt_celltab} ```abap DATA: LT_CELLTAB TYPE LVC_T_STYL. ``` #### LV_UCOMM — data · unit 로컬 · L500-L500 {#decl-zfir0100f01-500-lv_ucomm} ```abap DATA: LV_UCOMM TYPE SY-UCOMM. ``` #### LV_TABIX — data · unit 로컬 · L503-L503 {#decl-zfir0100f01-503-lv_tabix} ```abap DATA: LV_TABIX TYPE SY-TABIX. ``` #### LT_ROWS — data · unit 로컬 · L518-L518 {#decl-zfir0100f01-518-lt_rows} ```abap DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행 ``` #### LS_ROWS — data · unit 로컬 · L519-L519 {#decl-zfir0100f01-519-ls_rows} ```abap DATA: LS_ROWS TYPE LVC_S_ROW. ``` ### `ZFIR0100F02` (5건) #### LS_CELLTAB — data · unit 로컬 · L92-L92 {#decl-zfir0100f02-92-ls_celltab} ```abap DATA: LS_CELLTAB TYPE LVC_S_STYL. ``` #### LV_MODE — data · unit 로컬 · L93-L93 {#decl-zfir0100f02-93-lv_mode} ```abap DATA: LV_MODE TYPE RAW4. ``` #### LS_MOD_CELLS — data · unit 로컬 · L965-L965 {#decl-zfir0100f02-965-ls_mod_cells} ```abap DATA: LS_MOD_CELLS TYPE LVC_S_MODI. ``` #### LV_LINE — data · unit 로컬 · L968-L968 {#decl-zfir0100f02-968-lv_line} ```abap DATA: LV_LINE TYPE I. ``` #### — field-symbol · unit 로컬 · L970-L970 {#decl-zfir0100f02-970--fs_field-} ```abap FIELD-SYMBOLS: TYPE ANY. ``` ## Unit 목록 (컨테이너) | unit | 유형 | 위치 | 조각 | 한 줄 요약 | |---|---|---|---|---| | INITIALIZATION | EVENT | ZFIR0100 L37-43 | 0 | INITIALIZATION 에서 SET_INIT 를 호출하는 이벤트 블록이다. | | AT SELECTION-SCREEN | EVENT | ZFIR0100 L44-49 | 0 | 선택화면 이벤트에서 GET_VARIANT(빈 FORM)를 호출하는 이벤트 블록이다. | | AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZFIR0100 L50-58 | 0 | 조회 연월 P_SPMON 의 F4 검색도움을 공용 풀 ZTR_POOL 의 GET_PERIOD_SPMON 으로 제공하는 이벤트 블록이다. | | START-OF-SELECTION | EVENT | ZFIR0100 L59-69 | 0 | SET_DATA 로 전자세금계산서를 조회하고 MODIFY_PROCESS 로 그리드 데이터를 구성하는 메인 이벤트 블록이다. | | END-OF-SELECTION | EVENT | ZFIR0100 L70-73 | 0 | 선택 종료 후 편집 ALV 화면 0100 을 호출하는 이벤트 블록이다. | | LCL_EVENT_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZFIR0100C01 L64-66 | 0 | | | LCL_EVENT_RECEIVER~HANDLE_ON_F4 | METHOD | ZFIR0100C01 L70-80 | 0 | | | LCL_EVENT_RECEIVER~HANDLE_ON_TOOLBAR | METHOD | ZFIR0100C01 L84-88 | 0 | | | LCL_EVENT_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZFIR0100C01 L92-94 | 0 | | | LCL_EVENT_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0100C01 L98-102 | 0 | | | SET_INIT | FORM | ZFIR0100F01 L13-24 | 0 | 리포트 ID 와 초기 모드(DISP)를 설정하고 GET_INIT_VARIANT 로 기본 변형을 불러오는 초기화 FORM 이다. | | SET_INIT_VARIANT | FORM | ZFIR0100F01 L35-44 | 0 | ALV 변형 구조 GS_VARIANT 에 리포트명·사용자·핸들 '0010' 을 설정하는 플러밍 FORM 이다. | | GET_INIT_VARIANT | FORM | ZFIR0100F01 L55-74 | 1 | 변형 키를 초기화하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형(Variant)을 조회하는 FORM 이다. | | GET_VARIANT | FORM | ZFIR0100F01 L79-81 | 0 | 선언만 되어 있고 본문이 비어 있는 FORM 이다. | | SET_DATA | FORM | ZFIR0100F01 L92-166 | 2 | 조회 월의 기간을 만든 뒤 전자세금계산서 헤더(ZDTV3T_AP_HEAD)·확장(ZDTV3T_AP_EXT)·상세(ZDTV3T_AP_EXT_D)를 조인해 전표처리 상태 조건으로 수신 내역을 IT_ZDTV3T_AP_HEAD 에 읽는 FORM 이다. | | RUN_MSG_PROC | FORM | ZFIR0100F01 L176-183 | 0 | SAPGUI_PROGRESS_INDICATOR 로 처리 중 메시지를 표시하는 진행 표시 유틸 FORM 이다. | | SET_POP_MESSAGE | FORM | ZFIR0100F01 L194-216 | 1 | POPUP_TO_CONFIRM 으로 예/아니오 확인 팝업을 띄워 사용자 응답(P_ANSWER)을 돌려주는 FORM 이다. | | SET_LOCK | FORM | ZFIR0100F01 L226-228 | 0 | 잠금/해제 처리를 위한 자리만 있고 본문이 비어 있는 FORM 이다. | | SELECT_PROCESS | FORM | ZFIR0100F01 L232-236 | 0 | 선언만 되어 있고 본문이 비어 있는 FORM 이다. | | MODIFY_PROCESS | FORM | ZFIR0100F01 L240-261 | 1 | 조회된 IT_ZDTV3T_AP_HEAD 를 GT_MAIN 그리드 테이블로 옮기며 전표번호 유무에 따라 처리 상태 아이콘(ZICON)을 설정하는 FORM 이다. | | POPUP_TO_CONFIRM | FORM | ZFIR0100F01 L265-296 | 1 | 저장/전표기표 명령에 맞는 문구로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄워 사용자 응답을 받는 FORM 이다. | | TEXT_PROCESS | FORM | ZFIR0100F01 L300-307 | 0 | 거래처 텍스트 보정용으로 예정되었으나 주석 처리되어 본문이 비어 있는 FORM 이다. | | DATE_PROCESS | FORM | ZFIR0100F01 L311-330 | 1 | 조회 연월(P_SPMON)로 월초~월말 날짜 범위 S_BUDAT 를 LAST_DAY_OF_MONTHS 로 구성하는 FORM 이다. | | SET_POST | FORM | ZFIR0100F01 L335-397 | 2 | ALV 에서 선택된 미처리 전자세금계산서 행을 GT_TABLE 로 메모리에 EXPORT 한 뒤 전표 입력 화면 ZFIR0110_DOC 을 호출해 매입전표를 기표하는 FORM 이다. | | SET_SAVE | FORM | ZFIR0100F01 L404-492 | 2 | ALV 에서 선택한 전자세금계산서 행의 전표번호를 수신 테이블에 저장하고 사용여부·상태 아이콘을 갱신한다. | | CHANG_LINE | FORM | ZFIR0100F01 L496-573 | 2 | ALV 에서 선택된 행만 변경 가능하도록 전체 행의 CELLTAB 을 초기화한 뒤 선택 행에 전표번호(BELNR)·회계연도(ZGJAH) 셀만 편집 가능한 스타일을 적용하는 FORM 이다. | | SET_ITAB_STYLE | FORM | ZFIR0100F02 L13-45 | 0 | GT_MAIN 전체 행을 돌며 SET_CELLTAB 으로 셀 편집 스타일(CELLTAB)을 만들어 각 행에 반영하는 ALV 셀 속성 설정 FORM 이다. | | SET_LINE_ITAB_STYLE | FORM | ZFIR0100F02 L51-74 | 0 | 단일 행의 CELLTAB 스타일 설정을 위해 작업변수만 준비하고 실제 로직은 없는 미완성 FORM 이다. | | SET_CELLTAB | FORM | ZFIR0100F02 L88-124 | 1 | 변경(CHAN) 모드에서 필드카탈로그 전 컬럼을 입력 불가로 두되 전표번호(BELNR)·회계연도(ZGJAH) 셀만 입력 가능하게 CELLTAB 스타일을 만드는 FORM 이다. | | SET_CELLTAB_INSERT | FORM | ZFIR0100F02 L131-153 | 0 | 필드카탈로그의 모든 컬럼을 입력 불가(MC_STYLE_DISABLED) 스타일로 CELLTAB 에 넣어 해당 행의 셀 편집을 막는 ALV 셀 속성 FORM 이다. | | SET_CONTAINER | FORM | ZFIR0100F02 L163-175 | 0 | 프레임·툴바제외·레이아웃·필드카탈로그·이벤트·ALV 표시 FORM 을 순서대로 호출해 화면 컨테이너를 구성하는 디스패치 FORM 이다. | | SET_FRAME | FORM | ZFIR0100F02 L186-196 | 0 | 커스텀 컨테이너 CON_0100 과 ALV 그리드 객체(GO_GRID)를 생성하는 플러밍 FORM 이다. | | SET_VARIANT | FORM | ZFIR0100F02 L206-215 | 0 | ALV 변형(Variant) 구조 GS_VARIANT 에 리포트명·사용자·핸들을 초기 설정하는 플러밍 FORM 이다. | | SET_TOOLBAR_EXCLUDE | FORM | ZFIR0100F02 L226-389 | 0 | 편집 ALV 툴바에서 행 삽입·삭제·복사·붙여넣기·UNDO·REFRESH 버튼을 제외 목록(GT_EXCLUDE)에 넣는 ALV 설정 FORM 이다. | | SET_LAYOUT | FORM | ZFIR0100F02 L399-416 | 0 | ALV 레이아웃(열너비 최적화, 선택모드, CELLTAB 스타일 필드, SCOL 색상 필드)을 설정하는 플러밍 FORM 이다. | | SET_FIELDCATALOG | FORM | ZFIR0100F02 L426-439 | 0 | 화면번호에 따라 필드카탈로그 작업영역(GS_FCAT/GT_FCAT1)을 필드심볼에 할당하고 SET_FIELD01 을 호출하는 플러밍 FORM 이다. | | SET_FIELD01 | FORM | ZFIR0100F02 L450-656 | 0 | 화면 0100 편집 그리드의 필드카탈로그(작성일자·사업장·공급가액·세액·공급자 정보·전표번호 등)를 SET_FIELD 로 정의하는 ALV 설정 FORM 이다. | | SET_FIELD | FORM | ZFIR0100F02 L668-693 | 0 | 필드카탈로그 속성을 동적 ASSIGN 으로 채워 S/E 타입에 따라 초기화·APPEND 하는 필드카탈로그 빌더 유틸 FORM 이다. | | RUN_DISPLAY_ALV | FORM | ZFIR0100F02 L703-725 | 1 | 화면 0100 용 그리드(GO_GRID)와 GT_MAIN 을 할당하고 이벤트 등록 후 SET_TABLE_FOR_FIRST_DISPLAY 로 편집 가능한 ALV 를 최초 표시한다. | | SET_EVENT_UCOMM | FORM | ZFIR0100F02 L736-768 | 0 | 그리드를 초기 비편집 상태로 두고 MODIFIED/ENTER 편집 이벤트를 등록한 뒤 CHECK_CHANGED_DATA 와 포커스 설정을 하는 ALV 편집 이벤트 준비 FORM 이다. | | SET_EVENT | FORM | ZFIR0100F02 L778-790 | 0 | ALV 그리드 이벤트 핸들러 객체(GO_EVENT)를 생성하고 F4·데이터변경·사용자명령·툴바·더블클릭 핸들러를 등록하는 플러밍 FORM 이다. | | SET_REFRESH | FORM | ZFIR0100F02 L801-824 | 0 | 레이아웃을 재적용하고 REFRESH_TABLE_DISPLAY(행·열 안정)와 CL_GUI_CFW=>FLUSH 로 ALV 그리드를 새로고침하는 플러밍 FORM 이다. | | TOOLBAR | FORM | ZFIR0100F02 L836-864 | 0 | ALV 툴바 버튼 추가용 핸들러이나 모든 내용이 주석 처리되어 실제 로직이 없는 FORM 이다. | | USER_COMMAND | FORM | ZFIR0100F02 L874-901 | 1 | ALV 툴바 사용자 명령(REFRESH/SAVE/POST)을 받아 재조회·확인 후 저장·전표기표 FORM 으로 분기하는 디스패치 FORM 이다. | | SET_CHANGE | FORM | ZFIR0100F02 L912-953 | 2 | 변경(CHAN) 명령 시 선택 행 상태에 따라 그리드 편집 가능 여부를 토글하고 잠금(SET_LOCK)을 설정하는 FORM 이다. | | DATA_CHANGED | FORM | ZFIR0100F02 L962-1040 | 2 | 편집 ALV 의 DATA_CHANGED 이벤트에서 변경된 셀 값을 GT_MAIN 에 반영하고 변경 플래그를 세우며 오류 시 프로토콜에 기록한 뒤 그리드를 새로고침하는 FORM 이다. | | CHK_DATS | FORM | ZFIR0100F02 L1046-1052 | 0 | 날짜 필드 검증용으로 선언만 되어 있고 본문이 비어 있는 FORM 이다. | | ADD_PROTOCAL_ENTRY | FORM | ZFIR0100F02 L1064-1084 | 1 | 편집 ALV 의 셀 검증 오류를 CL_ALV_CHANGED_DATA_PROTOCOL->ADD_PROTOCOL_ENTRY 로 오류 로그(메시지 00/E)에 추가하는 FORM 이다. | | HANDLE_DOUBLE_CLICK | FORM | ZFIR0100F02 L1096-1113 | 1 | ALV 전표번호(BELNR) 셀 더블클릭 시 회사코드·회계연도·전표번호를 파라미터로 세팅해 FB03 전표 조회 트랜잭션을 호출하는 FORM 이다. | | CHK_DATA | FORM | ZFIR0100F02 L1124-1125 | 0 | 데이터 검증용으로 선언만 되어 있고 본문이 비어 있는 FORM 이다. | | GET_COLOR | FORM | ZFIR0100F02 L1137-1152 | 0 | ALV 행의 DEVNUM 컬럼에 셀 색상(LVC_S_SCOL)을 지정하는 표시용 FORM 이다. | | ON_F4 | FORM | ZFIR0100F02 L1157-1168 | 0 | ALV F4 이벤트 핸들러로 선언만 되어 있고 본문이 비어 있는 FORM 이다. | | F4_FIELD_ENTRY_PART | FORM | ZFIR0100F02 L1177-1188 | 0 | ALV 그리드 필드에 F4 검색도움을 등록하는(REGISTER_F4_FOR_FIELDS) 플러밍 FORM 이다. | | USER_COMMAND_0100_EXIT INPUT | MODULE | ZFIR0100I01 L7-37 | 2 | 화면 0100 종료 명령 처리 시 미저장 변경분 확인 팝업을 띄우고 잠금을 해제한 뒤 화면을 빠져나가는 EXIT 모듈이다. | | USER_COMMAND_0100 INPUT | MODULE | ZFIR0100I01 L45-89 | 1 | 화면 0100 의 사용자 명령(변경·재조회·저장·전기)을 받아 해당 처리 FORM 으로 분기하는 PAI 모듈이다. | | STATUS_0100 OUTPUT | MODULE | ZFIR0100O01 L10-29 | 0 | | | SET_SCREEN_0100 OUTPUT | MODULE | ZFIR0100O01 L37-41 | 0 | | | SET_GRID_0100 OUTPUT | MODULE | ZFIR0100O01 L49-69 | 0 | |