Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1938 lines
78 KiB
Markdown
1938 lines
78 KiB
Markdown
---
|
|
type: abap-program
|
|
title: "ZFIR0160 — [FI] 권한관리"
|
|
description: "FI 커스텀 프로그램들이 공통으로 참조하는 권한 테이블 ZFIT0160 을 유지보수하는 관리 화면이다. 사용자별로 접근 가능한 회사코드·사업장 등을 편집 가능한 ALV 그리드에서 등록·수정·복사·삭제하고 저장한다. ZFIT0160 은 이 27본 중 18본이 읽는 테이블로, AUTHORITY_BUKRS(공용 인클루드)가 회사코드 권한을 판정할 때 참조한다."
|
|
resource: "abap://ZFIR0160"
|
|
tags: ["권한관리", "마스터관리", "설정", "FI", "권한저장", "권한테이블", "사용자ID", "일괄저장", "롤백", "저장건수", "저장 확인", "변경 여부", "권한 테이블 저장", "화면 종료", "오류 체크", "프로그램 종료", "기능코드", "변경 모드", "조회 모드", "입력 가능 전환"]
|
|
generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:23+00:00" }
|
|
status: stable
|
|
x-package:
|
|
x-changed-on:
|
|
x-tables-read: ["USER_ADDRP", "ZFIT0160"]
|
|
x-tables-write: ["GT_MAIN", "ZFIT0160"]
|
|
x-calls: ["HELP_VALUES_GET_NO_DD_NAME", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "REUSE_ALV_VARIANT_DEFAULT_GET", "REUSE_ALV_VARIANT_F4", "SAPGUI_PROGRESS_INDICATOR"]
|
|
x-code-hash: "dcd5669a8a7534a78705c2d3ceaaff129923cbd2cd1a348ab5c57d65b27ca11c"
|
|
x-unit-count: 62
|
|
x-chunk-count: 26
|
|
x-declaration-count: 75
|
|
---
|
|
|
|
## 업무 목적
|
|
|
|
FI 커스텀 프로그램들이 공통으로 참조하는 권한 테이블 ZFIT0160 을 유지보수하는 관리 화면이다. 사용자별로 접근 가능한 회사코드·사업장 등을 편집 가능한 ALV 그리드에서 등록·수정·복사·삭제하고 저장한다. ZFIT0160 은 이 27본 중 18본이 읽는 테이블로, AUTHORITY_BUKRS(공용 인클루드)가 회사코드 권한을 판정할 때 참조한다.
|
|
|
|
## 주 흐름
|
|
|
|
1. 초기 변형을 불러오고 선택화면을 준비한다 (SET_INIT → GET_INIT_VARIANT → GET_VARIANT)
|
|
2. ZFIT0160 권한 내역과 사용자 정보(USER_ADDRP)를 읽어 그리드 데이터를 만든다 (SET_DATA)
|
|
3. 셀 입력 가능 여부와 행 스타일을 설정한다 (SET_ITAB_STYLE → SET_LINE_CELLTAB)
|
|
4. 편집 가능한 ALV 를 화면 0100 에 띄운다 (SET_FIELD01 → RUN_DISPLAY_ALV)
|
|
5. 행 추가·복사·삭제와 셀 변경을 처리하고 사용자 ID 에 F4 를 제공한다 (SET_COPY_ROWS / SET_DELETE_ROWS / DATA_CHANGED / F4_UNAME_PROCESS)
|
|
6. 유효성(기간 중복 등)을 검증한다 (CHK_ZINOUT → CHK_DATA)
|
|
7. 확인 팝업 후 ZFIT0160 에 저장한다 (POPUP_TO_CONFIRM → SET_SAVE → ZFIT0160_PROCESS)
|
|
|
|
## 핵심 내부테이블
|
|
|
|
- `GT_MAIN` — 권한 내역 편집 그리드 (채움: SET_DATA / 소비: RUN_DISPLAY_ALV, SET_SAVE)
|
|
|
|
## 테이블 / 외부 호출
|
|
|
|
- read: USER_ADDRP, ZFIT0160
|
|
- write: GT_MAIN, ZFIT0160
|
|
- 외부 호출: HELP_VALUES_GET_NO_DD_NAME, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, REUSE_ALV_VARIANT_DEFAULT_GET, REUSE_ALV_VARIANT_F4, SAPGUI_PROGRESS_INDICATOR
|
|
|
|
## 로직 조각 (26건 / unit 22개)
|
|
|
|
LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다.
|
|
테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.
|
|
|
|
### FORM GET_INIT_VARIANT — `ZFIR0160F01` L34-L53 (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
|
|
40| GX_VARIANT = GS_VARIANT.
|
|
41|
|
|
42| CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
|
|
43| EXPORTING
|
|
44| I_SAVE = 'A'
|
|
45| CHANGING
|
|
46| CS_VARIANT = GX_VARIANT
|
|
47| EXCEPTIONS
|
|
48| NOT_FOUND = 2.
|
|
49| IF SY-SUBRC = 0.
|
|
50| **** PA_LAYOU = GX_VARIANT-VARIANT.
|
|
51| 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-zfir0160t01-9-gx_variant), [`GS_VARIANT`](#decl-zfir0160t01-8-gs_variant)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F01#L40-L51` · confidence 0.8 · `ZFIR0160#ZFIR0160F01#FORM#GET_INIT_VARIANT#C1`
|
|
|
|
### FORM SET_DATA — `ZFIR0160F01` L91-L109 (19줄)
|
|
|
|
*오류가 없을 때 진행 메시지를 띄우고 SELECT_PROCESS(ZFIT0160 조회)와 MODIFY_PROCESS(성명 보완)를 순서대로 수행해 그리드 데이터를 준비하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 11/19줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] GV_ERR 이 없을 때 GT_MAIN 을 비우고 진행 인디케이터(RUN_MSG_PROC)를 표시한 뒤 SELECT_PROCESS 로 ZFIT0160 을 읽고 MODIFY_PROCESS 로 사용자 성명을 채운다.
|
|
|
|
```abap
|
|
96| CHECK GV_ERR IS INITIAL.
|
|
97|
|
|
98| CLEAR: GT_MAIN, GT_MAIN[], GV_ERR.
|
|
99|
|
|
100| * INDICATOR
|
|
101| PERFORM RUN_MSG_PROC USING '집계 데이터 조회 중...'.
|
|
102|
|
|
103| PERFORM SELECT_PROCESS.
|
|
104|
|
|
105|
|
|
106| PERFORM MODIFY_PROCESS.
|
|
```
|
|
|
|
- **EN**: When no error is flagged, clear GT_MAIN, show a progress indicator, load ZFIT0160 via SELECT_PROCESS and enrich user names via MODIFY_PROCESS.
|
|
- 호출(파서): RUN_MSG_PROC, SELECT_PROCESS, MODIFY_PROCESS
|
|
- SAP 객체: ZFIT0160
|
|
- 업무 키워드: 데이터 조회, 진행 표시, 권한 목록 준비
|
|
- English: data load, progress indicator
|
|
- 정의부(복사 시 함께 필요): [`GV_ERR`](#decl-zfir0160t01-40-gv_err), [`GT_MAIN`](#decl-zfir0160top-19-gt_main)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F01#L96-L106` · confidence 0.8 · `ZFIR0160#ZFIR0160F01#FORM#SET_DATA#C1`
|
|
|
|
### FORM ZFIT0160_PROCESS — `ZFIR0160F01` L243-L256 (14줄)
|
|
|
|
*권한 테이블 ZFIT0160 전체를 읽어 그리드 내부테이블 GT_MAIN 에 적재하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 3/14줄(21%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [sql_select] 권한 관리 테이블 ZFIT0160 의 전 레코드를 SELECT 하여 편집 그리드용 GT_MAIN 에 적재한다.
|
|
|
|
```abap
|
|
250| SELECT *
|
|
251| INTO CORRESPONDING FIELDS OF TABLE GT_MAIN
|
|
252| FROM ZFIT0160.
|
|
```
|
|
|
|
- **EN**: Select all records from authorization table ZFIT0160 into GT_MAIN for the editable grid.
|
|
- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write -
|
|
- SAP 객체: ZFIT0160
|
|
- 업무 키워드: 권한 테이블, 사용자 권한 조회, 전체 조회
|
|
- English: authorization table, SELECT
|
|
- 정의부(복사 시 함께 필요): [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`ZFIT0160`](#decl-zfir0160top-5-zfit0160)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F01#L250-L252` · confidence 0.95 · `ZFIR0160#ZFIR0160F01#FORM#ZFIT0160_PROCESS#C1`
|
|
|
|
### FORM MODIFY_PROCESS — `ZFIR0160F01` L174-L195 (22줄)
|
|
|
|
*GT_MAIN 의 각 사용자 ID 에 대해 공용 풀(ZTR_POOL)의 USER_ADDRP_PROCESS 로 성명을 조회해 NAME 컬럼을 채우는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] GT_MAIN 을 USERID 로 정렬한 뒤 각 행마다 ZTR_POOL 의 USER_ADDRP_PROCESS 를 호출해 사용자 성명(USER_ADDRP)을 구해 NAME 필드를 MODIFY 한다.
|
|
|
|
```abap
|
|
179| SORT GT_MAIN BY USERID.
|
|
180|
|
|
181|
|
|
182| LOOP AT GT_MAIN.
|
|
183|
|
|
184| L_TABIX = SY-TABIX.
|
|
185|
|
|
186| PERFORM USER_ADDRP_PROCESS(ZTR_POOL) USING GT_MAIN-USERID
|
|
187| CHANGING GT_MAIN-NAME.
|
|
188|
|
|
189|
|
|
190| MODIFY GT_MAIN INDEX L_TABIX TRANSPORTING NAME.
|
|
191| CLEAR GT_MAIN.
|
|
192|
|
|
193| ENDLOOP.
|
|
```
|
|
|
|
- **EN**: Sort GT_MAIN by USERID and for each row derive the user's name from USER_ADDRP via USER_ADDRP_PROCESS (ZTR_POOL), updating the NAME field.
|
|
- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md)
|
|
- 호출(파서): USER_ADDRP_PROCESS
|
|
- SAP 객체: USER_ADDRP, ZTR_POOL
|
|
- 업무 키워드: 사용자 성명, 사용자 마스터, 이름 보완, 권한 목록
|
|
- English: user name, USER_ADDRP, enrichment
|
|
- 정의부(복사 시 함께 필요): [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`L_TABIX`](#decl-zfir0160f01-177-l_tabix)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F01#L179-L193` · confidence 0.85 · `ZFIR0160#ZFIR0160F01#FORM#MODIFY_PROCESS#C1`
|
|
|
|
### FORM DATA_CHANGED — `ZFIR0160F02` L939-L1028 (90줄)
|
|
|
|
*편집 그리드 셀 변경(DATA_CHANGED) 시 변경값을 GT_MAIN 에 반영하고 ZINOUT 값을 검증해 오류면 프로토콜에 기록, 정상이면 셀을 갱신하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 65/90줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [validation] 변경된 각 셀(MT_GOOD_CELLS)에 대해 GET_CELL_VALUE 로 값을 읽어 GT_MAIN 해당 필드에 MODIFY 하고 변경 플래그(GV_CHK)를 세우며, ZINOUT 필드는 CHK_ZINOUT 으로 검증해 오류면 ADD_PROTOCAL_ENTRY 로 오류 프로토콜에 기록, 정상이면 MODIFY_CELL 로 셀 값을 확정한다.
|
|
|
|
```abap
|
|
958| LOOP AT P_CHANGED->MT_GOOD_CELLS INTO LS_MOD_CELLS.
|
|
959| CLEAR: GV_ERR, GS_MSG.
|
|
960|
|
|
961| ASSIGN COMPONENT LS_MOD_CELLS-FIELDNAME
|
|
962| OF STRUCTURE GT_MAIN TO <FS_FIELD>.
|
|
963|
|
|
964| * 입력된 셀의 값 얻기
|
|
965|
|
|
966| READ TABLE GT_MAIN INDEX LS_MOD_CELLS-ROW_ID.
|
|
967|
|
|
968|
|
|
969| CALL METHOD P_CHANGED->GET_CELL_VALUE
|
|
970| EXPORTING
|
|
971| I_ROW_ID = LS_MOD_CELLS-ROW_ID
|
|
972| I_FIELDNAME = LS_MOD_CELLS-FIELDNAME
|
|
973| I_TABIX = LS_MOD_CELLS-TABIX
|
|
974| IMPORTING
|
|
975| E_VALUE = <FS_FIELD>.
|
|
976|
|
|
977| GV_CHK = 'X'. " 변경 CHECK
|
|
978|
|
|
979| * GT_MAIN-ZINOUT = <FS_FIELD>.
|
|
980|
|
|
981| MODIFY GT_MAIN INDEX LS_MOD_CELLS-ROW_ID
|
|
982| TRANSPORTING (LS_MOD_CELLS-FIELDNAME).
|
|
983|
|
|
984| ** 입력된 값 CHECK
|
|
985| IF LS_MOD_CELLS-FIELDNAME = 'ZINOUT'.
|
|
986| PERFORM CHK_ZINOUT USING LS_MOD_CELLS-FIELDNAME
|
|
987| LS_MOD_CELLS-ROW_ID
|
|
988| LS_MOD_CELLS-VALUE
|
|
989| CHANGING GV_ERR
|
|
990| GS_MSG.
|
|
991| ENDIF.
|
|
992|
|
|
993|
|
|
994| IF GV_ERR IS NOT INITIAL.
|
|
995| PERFORM ADD_PROTOCAL_ENTRY USING P_CHANGED
|
|
996| LS_MOD_CELLS
|
|
997| GS_MSG.
|
|
998| ELSE.
|
|
999|
|
|
1000| * UPDATE VALUE
|
|
1001|
|
|
1002| CALL METHOD P_CHANGED->MODIFY_CELL
|
|
1003| EXPORTING
|
|
1004| I_ROW_ID = LS_MOD_CELLS-ROW_ID
|
|
1005| I_FIELDNAME = LS_MOD_CELLS-FIELDNAME
|
|
1006| I_VALUE = LS_MOD_CELLS-VALUE.
|
|
1007|
|
|
1008|
|
|
1009|
|
|
1010| * IF LS_MOD_CELLS-FIELDNAME = 'BANKL'.
|
|
1011| *
|
|
1012| * PERFORM BNKA_PROCESS(ZTR_POOL) USING GT_MAIN-BANKL
|
|
1013| * CHANGING GT_MAIN-BANKA.
|
|
1014| *
|
|
1015| * MODIFY GT_MAIN INDEX LS_MOD_CELLS-ROW_ID TRANSPORTING
|
|
1016| * BANKA.
|
|
1017| * ENDIF.
|
|
1018|
|
|
1019|
|
|
1020|
|
|
1021| ENDIF.
|
|
1022| ENDLOOP.
|
|
```
|
|
|
|
- **EN**: For each changed cell read the new value via CL_ALV_CHANGED_DATA_PROTOCOL->GET_CELL_VALUE, update GT_MAIN, validate ZINOUT with CHK_ZINOUT, log errors to the protocol or confirm the cell with MODIFY_CELL.
|
|
- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md)
|
|
- 호출(파서): P_CHANGED->MT_GOOD_CELLS, P_CHANGED->GET_CELL_VALUE, CHK_ZINOUT, ADD_PROTOCAL_ENTRY, P_CHANGED->MODIFY_CELL
|
|
- SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL, CL_GUI_ALV_GRID
|
|
- 업무 키워드: 셀 변경, 변경 플래그, 입출구분자 검증, 오류 프로토콜, 그리드 반영
|
|
- English: data changed, cell validation, change protocol
|
|
- 정의부(복사 시 함께 필요): [`LS_MOD_CELLS`](#decl-zfir0160f02-942-ls_mod_cells), [`GV_ERR`](#decl-zfir0160t01-40-gv_err), [`GS_MSG`](#decl-zfir0160t01-39-gs_msg), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`<FS_FIELD>`](#decl-zfir0160f02-946--fs_field-), [`GV_CHK`](#decl-zfir0160t01-42-gv_chk)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L958-L1022` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#DATA_CHANGED#C1`
|
|
|
|
### FORM CHK_ZINOUT — `ZFIR0160F02` L1042-L1064 (23줄)
|
|
|
|
*입출구분자(ZINOUT) 값이 허용 코드(11,12,13,14,51~55,57) 중 하나인지 검증하고 아니면 오류 플래그와 메시지를 돌려주는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 15/23줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [validation] 입력된 입출구분자 값이 허용 목록(11,13,51,12,52,14,57,53,54,55)에 없으면 P_ERR='X' 와 '입출구분자 오류입니다' 메시지를 설정한다.
|
|
|
|
```abap
|
|
1048| IF P_VALUE = '11' OR
|
|
1049| P_VALUE = '13' OR
|
|
1050| P_VALUE = '51' OR
|
|
1051| P_VALUE = '12' OR
|
|
1052| P_VALUE = '52' OR
|
|
1053| P_VALUE = '14' OR
|
|
1054| P_VALUE = '57' OR
|
|
1055| P_VALUE = '53' OR
|
|
1056| P_VALUE = '54' OR
|
|
1057| P_VALUE = '55'.
|
|
1058|
|
|
1059| ELSE.
|
|
1060| P_ERR = 'X'.
|
|
1061| P_MSG-MSGV1 = '입출구분자 오류입니다'.
|
|
1062| ENDIF.
|
|
```
|
|
|
|
- **EN**: Validate that the in/out indicator value is one of the allowed codes; otherwise set the error flag and message.
|
|
- 업무 키워드: 입출구분자, 유효성 검증, 허용 코드, 오류 메시지
|
|
- English: validation, indicator check
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L1048-L1062` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#CHK_ZINOUT#C1`
|
|
|
|
### FORM ADD_PROTOCAL_ENTRY — `ZFIR0160F02` L1076-L1096 (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
|
|
1084| CALL METHOD RR_DATA_CHANGED->ADD_PROTOCOL_ENTRY
|
|
1085| EXPORTING
|
|
1086| I_MSGID = '00'
|
|
1087| I_MSGTY = 'E'
|
|
1088| I_MSGNO = PS_MESSAGE-MSGNO
|
|
1089| I_MSGV1 = PS_MESSAGE-MSGV1
|
|
1090| I_MSGV2 = PS_MESSAGE-MSGV2
|
|
1091| I_MSGV3 = PS_MESSAGE-MSGV3
|
|
1092| I_MSGV4 = PS_MESSAGE-MSGV4
|
|
1093| I_FIELDNAME = RS_MOD_CELLS-FIELDNAME
|
|
1094| 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://ZFIR0160/ZFIR0160F02#L1084-L1094` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#ADD_PROTOCAL_ENTRY#C1`
|
|
|
|
### FORM F4_UNAME_PROCESS — `ZFIR0160F02` L1314-L1417 (104줄)
|
|
|
|
*USERID 셀의 F4 도움말로 USER_ADDRP 사용자 목록을 HELP_VALUES_GET_NO_DD_NAME 팝업으로 보여주고 선택값과 성명을 GT_MAIN 행에 반영하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 3개가 56/104줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [sql_select] USER_ADDRP 뷰에서 사용자 ID(BNAME)와 이름(NAME_TEXT)을 전부 읽어 F4 목록용 IT_VALUE 로 옮기고, 없으면 '해당 자료가 없습니다' 메시지로 종료한다.
|
|
|
|
```abap
|
|
1355| SELECT BNAME NAME_TEXT INTO TABLE IT_USER
|
|
1356| FROM USER_ADDRP.
|
|
1357|
|
|
1358| LOOP AT IT_USER.
|
|
1359| IT_VALUE-TEXT1 = IT_USER-BNAME.
|
|
1360| IT_VALUE-TEXT2 = IT_USER-NAME_TEXT.
|
|
1361| APPEND IT_VALUE.
|
|
1362| CLEAR IT_VALUE.
|
|
1363| ENDLOOP.
|
|
1364|
|
|
1365| * 검색된 자료의 존재 여부.
|
|
1366| IF SY-SUBRC <> 0.
|
|
1367| MESSAGE S000 WITH '해당 자료가 없습니다.'.
|
|
1368| EXIT.
|
|
1369| ENDIF.
|
|
```
|
|
|
|
- **EN**: Read user IDs and names from USER_ADDRP into the F4 hit list table and exit with a message if nothing is found.
|
|
- 테이블(파서): read [USER_ADDRP](/tables/USER_ADDRP.md) / write -
|
|
- SAP 객체: USER_ADDRP
|
|
- 업무 키워드: 사용자 목록, F4 도움말, 사용자 마스터 조회
|
|
- English: value help, USER_ADDRP, user master
|
|
- 정의부(복사 시 함께 필요): [`IT_USER`](#decl-zfir0160f02-1336-it_user), [`IT_VALUE`](#decl-zfir0160f02-1341-it_value)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L1355-L1369` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#F4_UNAME_PROCESS#C1`
|
|
|
|
#### [fm_call] 히트리스트 컬럼(USR21-BNAME 선택필드, ADRP-NAME_TEXT)을 정의하고 HELP_VALUES_GET_NO_DD_NAME 을 호출해 사용자 선택 팝업을 띄워 선택 인덱스와 값을 받는다.
|
|
|
|
```abap
|
|
1373| IT_FIELDS-TABNAME = 'USR21'.
|
|
1374| IT_FIELDS-FIELDNAME = 'BNAME'.
|
|
1375| IT_FIELDS-SELECTFLAG = 'X'. "실제 선택되는 값에 'X' 표시
|
|
1376| APPEND IT_FIELDS.
|
|
1377|
|
|
1378|
|
|
1379|
|
|
1380| IT_FIELDS-TABNAME = 'ADRP'.
|
|
1381| IT_FIELDS-FIELDNAME = 'NAME_TEXT'.
|
|
1382| IT_FIELDS-SELECTFLAG = ' '.
|
|
1383| APPEND IT_FIELDS.
|
|
1384|
|
|
1385|
|
|
1386| * F4기능 부분
|
|
1387| CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
|
|
1388| EXPORTING
|
|
1389| SELECTFIELD = SELECTFIELD
|
|
1390| IMPORTING
|
|
1391| IND = LD_TABIX
|
|
1392| SELECT_VALUE = SELECT_VALUE
|
|
1393| TABLES
|
|
1394| FIELDS = IT_FIELDS
|
|
1395| FULL_TABLE = IT_VALUE
|
|
1396| EXCEPTIONS
|
|
1397| FULL_TABLE_EMPTY = 1
|
|
1398| NO_TABLESTRUCTURE_GIVEN = 2
|
|
1399| NO_TABLEFIELDS_IN_DICTIONARY = 3
|
|
1400| MORE_THEN_ONE_SELECTFIELD = 4
|
|
1401| NO_SELECTFIELD = 5
|
|
1402| OTHERS = 6.
|
|
```
|
|
|
|
- **EN**: Define hit-list columns (USR21-BNAME, ADRP-NAME_TEXT) and call HELP_VALUES_GET_NO_DD_NAME to show the user selection popup and return the chosen value.
|
|
- 호출(파서): HELP_VALUES_GET_NO_DD_NAME
|
|
- SAP 객체: HELP_VALUES_GET_NO_DD_NAME, USR21, ADRP
|
|
- 업무 키워드: F4 팝업, 히트리스트, 사용자 선택
|
|
- English: value help popup, hit list
|
|
- 정의부(복사 시 함께 필요): [`IT_FIELDS`](#decl-zfir0160f02-1328-it_fields), [`SELECTFIELD`](#decl-zfir0160f02-1327-selectfield), [`LD_TABIX`](#decl-zfir0160f02-1330-ld_tabix), [`SELECT_VALUE`](#decl-zfir0160f02-1329-select_value), [`IT_VALUE`](#decl-zfir0160f02-1341-it_value)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L1373-L1402` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#F4_UNAME_PROCESS#C2`
|
|
|
|
#### [control_flow] 선택된 사용자 ID 를 GT_MAIN-USERID 에 넣고 USER_ADDRP_PROCESS(ZTR_POOL)로 성명을 구해 해당 행의 USERID·NAME 을 MODIFY 한 뒤 그리드를 갱신한다.
|
|
|
|
```abap
|
|
1405| CHECK NOT LD_TABIX IS INITIAL.
|
|
1406| READ TABLE IT_VALUE INDEX LD_TABIX.
|
|
1407| GT_MAIN-USERID = SELECT_VALUE.
|
|
1408|
|
|
1409|
|
|
1410| PERFORM USER_ADDRP_PROCESS(ZTR_POOL) USING GT_MAIN-USERID
|
|
1411| CHANGING GT_MAIN-NAME.
|
|
1412|
|
|
1413|
|
|
1414| MODIFY GT_MAIN INDEX ES_ROW_NO-ROW_ID TRANSPORTING USERID NAME.
|
|
1415| PERFORM SET_REFRESH.
|
|
```
|
|
|
|
- **EN**: Apply the selected user ID to the grid row, derive the name via USER_ADDRP_PROCESS (ZTR_POOL), modify USERID/NAME and refresh the grid.
|
|
- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md)
|
|
- 호출(파서): USER_ADDRP_PROCESS, SET_REFRESH
|
|
- SAP 객체: ZTR_POOL, USER_ADDRP
|
|
- 업무 키워드: 선택값 반영, 사용자 성명, 그리드 갱신
|
|
- English: selected value, user name, ALV refresh
|
|
- 정의부(복사 시 함께 필요): [`LD_TABIX`](#decl-zfir0160f02-1330-ld_tabix), [`IT_VALUE`](#decl-zfir0160f02-1341-it_value), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`SELECT_VALUE`](#decl-zfir0160f02-1329-select_value)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L1405-L1415` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#F4_UNAME_PROCESS#C3`
|
|
|
|
### FORM USER_COMMAND — `ZFIR0160F02` L746-L788 (43줄)
|
|
|
|
*ALV 툴바 기능코드(INSE/DELE/COPY/SAVE)별로 행 삽입·삭제·복사·저장 처리를 분기하는 USER_COMMAND 핸들러이다.*
|
|
|
|
> 이 unit 의 조각 1개가 39/43줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] INSE 는 빈 행 추가 후 편집 스타일 설정, DELE 는 확인 팝업 후 SET_DELETE_ROWS, COPY 는 SET_COPY_ROWS, SAVE 는 확인 팝업 후 CHK_DATA 검증→SET_SAVE(ZFIT0160 저장)→재조회(SET_DATA)→그리드 갱신 순으로 분기한다.
|
|
|
|
```abap
|
|
748| CASE P_UCOMM.
|
|
749|
|
|
750| * WHEN 'CHAN'.
|
|
751| * PERFORM SET_CHANGE.
|
|
752|
|
|
753| WHEN 'INSE'.
|
|
754| CLEAR GT_MAIN.
|
|
755| APPEND GT_MAIN.
|
|
756| PERFORM SET_LINE_ITAB_STYLE USING P_UCOMM.
|
|
757|
|
|
758|
|
|
759| PERFORM SET_REFRESH.
|
|
760|
|
|
761|
|
|
762| WHEN 'DELE'.
|
|
763| PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM.
|
|
764| CHECK P_ANSWER = 'J'.
|
|
765|
|
|
766| PERFORM SET_DELETE_ROWS.
|
|
767| PERFORM SET_REFRESH.
|
|
768|
|
|
769|
|
|
770| WHEN 'COPY'.
|
|
771| PERFORM SET_COPY_ROWS.
|
|
772| PERFORM SET_REFRESH.
|
|
773|
|
|
774|
|
|
775| WHEN 'SAVE'.
|
|
776| PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM.
|
|
777| CHECK P_ANSWER = 'J'.
|
|
778|
|
|
779| PERFORM CHK_DATA.
|
|
780| PERFORM SET_SAVE.
|
|
781|
|
|
782| PERFORM SET_DATA.
|
|
783| PERFORM SET_ITAB_STYLE. " CHANGE
|
|
784| PERFORM SET_REFRESH.
|
|
785|
|
|
786| ENDCASE.
|
|
```
|
|
|
|
- **EN**: Dispatch toolbar function codes: insert a blank row, delete/copy selected rows, or after confirmation validate and save to ZFIT0160 then reload and refresh the grid.
|
|
- 호출(파서): SET_LINE_ITAB_STYLE, SET_REFRESH, POPUP_TO_CONFIRM, SET_DELETE_ROWS, SET_REFRESH, SET_COPY_ROWS, SET_REFRESH, POPUP_TO_CONFIRM, CHK_DATA, SET_SAVE, SET_DATA, SET_ITAB_STYLE, SET_REFRESH
|
|
- SAP 객체: ZFIT0160
|
|
- 업무 키워드: 행 삽입, 행 삭제, 행 복사, 저장, 확인 팝업, 권한 관리
|
|
- English: user command, toolbar, save, ALV refresh
|
|
- 정의부(복사 시 함께 필요): [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`P_ANSWER`](#decl-zfir0160top-35-p_answer)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L748-L786` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#USER_COMMAND#C1`
|
|
|
|
### FORM SET_LINE_ITAB_STYLE — `ZFIR0160F02` L54-L88 (35줄)
|
|
|
|
*현재 GT_MAIN 행 하나에 SET_LINE_CELLTAB 으로 신규 행 셀 스타일을 계산해 CELLTAB 에 반영하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 22/35줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] 현재 행 인덱스를 저장하고 P_UCOMM(INSE/COPY) 기준으로 SET_LINE_CELLTAB 을 호출해 셀 스타일을 만든 뒤 GT_MAIN-CELLTAB 에 삽입하고 MODIFY 한다.
|
|
|
|
```abap
|
|
63| LV_TABIX = SY-TABIX.
|
|
64|
|
|
65| CLEAR: GT_MAIN-CELLTAB,
|
|
66| LS_MAIN, LT_CELLTAB, LT_CELLTAB[], LV_UCOMM.
|
|
67|
|
|
68| MOVE-CORRESPONDING GT_MAIN TO LS_MAIN.
|
|
69|
|
|
70| * 개발번호
|
|
71|
|
|
72|
|
|
73| IF LV_UCOMM IS INITIAL.
|
|
74| LV_UCOMM = P_UCOMM.
|
|
75| ENDIF.
|
|
76|
|
|
77| * SETTING COLOR
|
|
78|
|
|
79| PERFORM SET_LINE_CELLTAB USING LS_MAIN
|
|
80| LV_UCOMM
|
|
81| CHANGING LT_CELLTAB.
|
|
82|
|
|
83| INSERT LINES OF LT_CELLTAB INTO TABLE GT_MAIN-CELLTAB.
|
|
84| MODIFY GT_MAIN INDEX LV_TABIX.
|
|
```
|
|
|
|
- **EN**: Build per-cell edit styles for the current GT_MAIN row via SET_LINE_CELLTAB and store them in the row's CELLTAB.
|
|
- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md)
|
|
- 호출(파서): SET_LINE_CELLTAB
|
|
- 업무 키워드: 행 스타일, 신규 행, 셀 편집 상태
|
|
- English: cell style, editable ALV
|
|
- 정의부(복사 시 함께 필요): [`LV_TABIX`](#decl-zfir0160f02-59-lv_tabix), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`LS_MAIN`](#decl-zfir0160f02-56-ls_main), [`LT_CELLTAB`](#decl-zfir0160f02-58-lt_celltab), [`LV_UCOMM`](#decl-zfir0160f02-61-lv_ucomm)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L63-L84` · confidence 0.8 · `ZFIR0160#ZFIR0160F02#FORM#SET_LINE_ITAB_STYLE#C1`
|
|
|
|
### FORM SET_LINE_CELLTAB — `ZFIR0160F02` L136-L172 (37줄)
|
|
|
|
*행 삽입/복사(INSE/COPY)된 신규 행에 대해 USERID·ZFIR0090 컬럼만 편집 가능하도록 셀 스타일(LVC_T_STYL)을 만드는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 25/37줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] 신규 행(INSE/COPY)에 대해 필드카탈로그를 순회하며 USERID 와 ZFIR0090 만 MC_STYLE_ENABLED, 나머지는 MC_STYLE_DISABLED 로 셀 스타일을 설정한다.
|
|
|
|
```abap
|
|
146| LOOP AT GT_FCAT1 INTO GS_FCAT.
|
|
147| CLEAR LS_CELLTAB.
|
|
148|
|
|
149| CASE P_UCOMM.
|
|
150|
|
|
151| WHEN 'INSE' OR 'COPY'.
|
|
152| IF GS_FCAT-FIELDNAME = 'USERID' OR
|
|
153| GS_FCAT-FIELDNAME = 'ZFIR0090'.
|
|
154|
|
|
155| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
|
|
156| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME.
|
|
157| LS_CELLTAB-STYLE = LV_MODE.
|
|
158|
|
|
159| ELSE.
|
|
160|
|
|
161| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
|
|
162| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME.
|
|
163| LS_CELLTAB-STYLE = LV_MODE.
|
|
164|
|
|
165| ENDIF.
|
|
166|
|
|
167| ENDCASE.
|
|
168|
|
|
169| INSERT LS_CELLTAB INTO TABLE P_CELLTAB.
|
|
170| ENDLOOP.
|
|
```
|
|
|
|
- **EN**: For inserted/copied rows, enable editing only for USERID and ZFIR0090 columns and disable the rest via LVC_S_STYL entries.
|
|
- 호출(파서): CL_GUI_ALV_GRID=>MC_STYLE_ENABLED, CL_GUI_ALV_GRID=>MC_STYLE_DISABLED
|
|
- SAP 객체: CL_GUI_ALV_GRID
|
|
- 업무 키워드: 신규 행, 셀 편집 가능, 사용자 ID, 권한 항목
|
|
- English: cell style, editable cell, new row
|
|
- 정의부(복사 시 함께 필요): [`GT_FCAT1`](#decl-zfir0160t01-12-gt_fcat1), [`GS_FCAT`](#decl-zfir0160t01-11-gs_fcat), [`LS_CELLTAB`](#decl-zfir0160f02-140-ls_celltab), [`LV_MODE`](#decl-zfir0160f02-141-lv_mode)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L146-L170` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#SET_LINE_CELLTAB#C1`
|
|
|
|
### FORM POPUP_TO_CONFIRM — `ZFIR0160F01` L203-L239 (37줄)
|
|
|
|
*저장/삭제/역분개 기능코드에 맞는 문구로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답을 돌려주는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 27/37줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [fm_call] 기능코드(SAVE/DELE/REVERSE)별 확인 문구를 정하고 POPUP_TO_CONFIRM_STEP 을 호출해 사용자의 예/아니오 응답을 FP_ANSWER 로 받는다.
|
|
|
|
```abap
|
|
210| CASE SAVE_OK.
|
|
211|
|
|
212| WHEN 'SAVE'.
|
|
213| L_DEFAULTOPTION = 'Y'.
|
|
214| L_TEXTLINE1 = ''.
|
|
215| L_TEXTLINE2 = '저장 하시겠습니까 ?'.
|
|
216|
|
|
217| WHEN 'DELE'.
|
|
218| L_DEFAULTOPTION = 'Y'.
|
|
219| L_TEXTLINE1 = ''.
|
|
220| L_TEXTLINE2 = '삭제 하시겠습니까 ?'.
|
|
221|
|
|
222| WHEN 'REVERSE'.
|
|
223| L_DEFAULTOPTION = 'Y'.
|
|
224| L_TEXTLINE2 = '역분개 하시겠습니까 ?'.
|
|
225|
|
|
226| ENDCASE.
|
|
227|
|
|
228| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
|
|
229| EXPORTING
|
|
230| DEFAULTOPTION = L_DEFAULTOPTION
|
|
231| TEXTLINE1 = L_TEXTLINE1
|
|
232| TEXTLINE2 = L_TEXTLINE2
|
|
233| TITEL = TEXT-101
|
|
234| CANCEL_DISPLAY = ''
|
|
235| IMPORTING
|
|
236| ANSWER = FP_ANSWER.
|
|
```
|
|
|
|
- **EN**: Set confirmation text per function code (save/delete/reverse) and call POPUP_TO_CONFIRM_STEP to obtain the user's answer.
|
|
- 호출(파서): POPUP_TO_CONFIRM_STEP
|
|
- SAP 객체: POPUP_TO_CONFIRM_STEP
|
|
- 업무 키워드: 확인 팝업, 저장 확인, 삭제 확인, 역분개 확인
|
|
- English: confirmation popup, reversal
|
|
- 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0160t01-36-save_ok), [`L_DEFAULTOPTION`](#decl-zfir0160f01-205-l_defaultoption), [`L_TEXTLINE1`](#decl-zfir0160f01-205-l_textline1), [`L_TEXTLINE2`](#decl-zfir0160f01-205-l_textline2)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F01#L210-L236` · confidence 0.9 · `ZFIR0160#ZFIR0160F01#FORM#POPUP_TO_CONFIRM#C1`
|
|
|
|
### FORM SET_DELETE_ROWS — `ZFIR0160F02` L834-L883 (50줄)
|
|
|
|
*그리드에서 선택한 사용자 행을 GT_MAIN 과 권한 테이블 ZFIT0160 에서 즉시 삭제하고 건수를 메시지로 알리는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 2개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] GET_SELECTED_ROWS 로 선택 행을 읽어 GT_TABLE 에 모으고, 선택이 없으면 '삭제할 행을 선택하세요' 메시지로 종료한다.
|
|
|
|
```abap
|
|
845| CALL METHOD GO_GRID->GET_SELECTED_ROWS
|
|
846| IMPORTING
|
|
847| ET_INDEX_ROWS = LT_ROWS.
|
|
848|
|
|
849| LOOP AT LT_ROWS INTO LS_ROWS.
|
|
850| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX.
|
|
851| IF SY-SUBRC = 0.
|
|
852| CLEAR GT_TABLE.
|
|
853| MOVE-CORRESPONDING GT_MAIN TO GT_TABLE.
|
|
854| APPEND GT_TABLE.
|
|
855|
|
|
856| ENDIF.
|
|
857| ENDLOOP.
|
|
858|
|
|
859|
|
|
860| IF GT_TABLE[] IS INITIAL.
|
|
861| MESSAGE S001 WITH '삭제할 행을 선택하세요.'.
|
|
862| EXIT.
|
|
863| ENDIF.
|
|
```
|
|
|
|
- **EN**: Collect selected ALV rows into GT_TABLE and exit with a message if nothing is selected.
|
|
- 호출(파서): GO_GRID->GET_SELECTED_ROWS
|
|
- SAP 객체: CL_GUI_ALV_GRID
|
|
- 업무 키워드: 선택 행, 삭제 대상, 행 선택 검사
|
|
- English: selected rows, validation
|
|
- 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0160c01-128-go_grid), [`LT_ROWS`](#decl-zfir0160f02-836-lt_rows), [`LS_ROWS`](#decl-zfir0160f02-837-ls_rows), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`ZFIT0160`](#decl-zfir0160top-5-zfit0160), [`GT_TABLE`](#decl-zfir0160top-39-gt_table)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L845-L863` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#SET_DELETE_ROWS#C1`
|
|
|
|
#### [db_write] 선택된 각 USERID 에 대해 GT_MAIN 에서 행을 지우고 DELETE FROM ZFIT0160 으로 권한 레코드를 DB 에서 삭제한 뒤 삭제 건수를 메시지로 표시한다.
|
|
|
|
```abap
|
|
866| LOOP AT GT_TABLE.
|
|
867|
|
|
868| DELETE GT_MAIN WHERE USERID = GT_TABLE-USERID.
|
|
869|
|
|
870| DELETE FROM ZFIT0160 WHERE USERID = GT_TABLE-USERID.
|
|
871|
|
|
872| LV_CNT = LV_CNT + 1.
|
|
873| ENDLOOP.
|
|
874|
|
|
875| IF LV_CNT IS INITIAL.
|
|
876| CONCATENATE '삭제건이 없습니다.' ' ' INTO LV_CNT.
|
|
877| ELSE.
|
|
878| CONCATENATE LV_CNT '건 삭제하였습니다.' INTO LV_CNT.
|
|
879| ENDIF.
|
|
880|
|
|
881| MESSAGE S001 WITH LV_CNT.
|
|
```
|
|
|
|
- **EN**: For each selected USERID delete the row from GT_MAIN and from authorization table ZFIT0160, then report the deleted count.
|
|
- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md), [ZFIT0160](/tables/ZFIT0160.md)
|
|
- SAP 객체: ZFIT0160
|
|
- 업무 키워드: 권한 삭제, 사용자 권한, DB 삭제, 삭제 건수
|
|
- English: authorization delete, DELETE FROM, user authorization
|
|
- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zfir0160top-5-zfit0160), [`GT_TABLE`](#decl-zfir0160top-39-gt_table), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`LV_CNT`](#decl-zfir0160f02-839-lv_cnt)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L866-L881` · confidence 0.95 · `ZFIR0160#ZFIR0160F02#FORM#SET_DELETE_ROWS#C2`
|
|
|
|
### FORM SET_COPY_ROWS — `ZFIR0160F02` L894-L929 (36줄)
|
|
|
|
*그리드에서 선택한 행들을 복사해 GT_MAIN 에 새 행으로 추가하고 편집 스타일을 부여하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 27/36줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] GET_SELECTED_ROWS 로 선택 행을 얻어 없으면 안내 메시지 후 종료하고, 선택 행을 GT_IMSI1 에 복사(CELLTAB 제거)한 뒤 GT_MAIN 에 APPEND 하며 SET_LINE_ITAB_STYLE 로 COPY 행 스타일을 준다.
|
|
|
|
```abap
|
|
901| CALL METHOD GO_GRID->GET_SELECTED_ROWS
|
|
902| IMPORTING
|
|
903| ET_INDEX_ROWS = LT_ROWS.
|
|
904|
|
|
905|
|
|
906| IF LT_ROWS[] IS INITIAL.
|
|
907| MESSAGE S001 WITH '복사할 행을 선택하세요.'.
|
|
908| EXIT.
|
|
909| ENDIF.
|
|
910|
|
|
911| CLEAR: GT_IMSI1[], GT_IMSI1.
|
|
912|
|
|
913| LOOP AT LT_ROWS INTO LS_ROWS.
|
|
914| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX.
|
|
915| IF SY-SUBRC = 0.
|
|
916| GT_IMSI1 = GT_MAIN.
|
|
917| CLEAR: GT_IMSI1-CELLTAB.
|
|
918| APPEND GT_IMSI1.
|
|
919| ENDIF.
|
|
920| ENDLOOP.
|
|
921|
|
|
922|
|
|
923| LOOP AT GT_IMSI1.
|
|
924| GT_MAIN = GT_IMSI1.
|
|
925| APPEND GT_MAIN.
|
|
926| PERFORM SET_LINE_ITAB_STYLE USING 'COPY'.
|
|
927| ENDLOOP.
|
|
```
|
|
|
|
- **EN**: Read selected ALV rows, copy them (without CELLTAB) into GT_IMSI1 and append them to GT_MAIN as new editable rows via SET_LINE_ITAB_STYLE.
|
|
- 호출(파서): GO_GRID->GET_SELECTED_ROWS, SET_LINE_ITAB_STYLE
|
|
- SAP 객체: CL_GUI_ALV_GRID
|
|
- 업무 키워드: 행 복사, 선택 행, 권한 등록, 행 추가
|
|
- English: row copy, selected rows, editable ALV
|
|
- 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0160c01-128-go_grid), [`LT_ROWS`](#decl-zfir0160f02-896-lt_rows), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`GT_IMSI1`](#decl-zfir0160top-32-gt_imsi1), [`LS_ROWS`](#decl-zfir0160f02-897-ls_rows)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L901-L927` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#SET_COPY_ROWS#C1`
|
|
|
|
### FORM SET_SAVE — `ZFIR0160F02` L1155-L1234 (80줄)
|
|
|
|
*편집한 권한 내역을 검증 통과 시에만 권한 테이블 ZFIT0160 에 일괄 저장하고 결과를 건수로 알린다.*
|
|
|
|
> 이 unit 의 조각 1개가 68/80줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [db_write] 앞선 검증에서 오류가 없을 때만 진행한다. 사용자ID 로 정렬해 ID 가 채워진 행만 저장 대상으로 모으고, 저장건이 없으면 메시지로 알린다. 모은 행을 커스텀 권한 테이블 ZFIT0160 에 MODIFY 로 일괄 반영하고, 성공하면 '전체 n건 중 m건 성공' 메시지를, 실패하면 오류 메시지와 함께 ROLLBACK WORK 로 되돌린다.
|
|
|
|
```abap
|
|
1165| CHECK GV_ERR IS INITIAL.
|
|
1166|
|
|
1167| CLEAR: GT_TABLE, GT_TABLE[], GV_CHK,
|
|
1168| LV_TEXT, LV_CNT1, LV_CNT2.
|
|
1169|
|
|
1170|
|
|
1171| SORT GT_MAIN BY USERID.
|
|
1172|
|
|
1173|
|
|
1174| LOOP AT GT_MAIN.
|
|
1175|
|
|
1176| LV_TABIX = SY-TABIX.
|
|
1177|
|
|
1178| CLEAR: GT_MAIN-SCOL, LT_SCOL, LT_SCOL[].
|
|
1179|
|
|
1180|
|
|
1181| IF GT_MAIN-USERID IS NOT INITIAL.
|
|
1182|
|
|
1183| CLEAR GT_TABLE.
|
|
1184|
|
|
1185| MOVE-CORRESPONDING GT_MAIN TO GT_TABLE.
|
|
1186|
|
|
1187| * IF GT_TABLE-ERNAM IS INITIAL.
|
|
1188| * GT_TABLE-ERNAM = SY-UNAME.
|
|
1189| * GT_TABLE-ERDAT = SY-DATLO.
|
|
1190| * GT_TABLE-ERZET = SY-TIMLO.
|
|
1191| * ELSE.
|
|
1192| * GT_TABLE-AENAM = SY-UNAME.
|
|
1193| * GT_TABLE-AEDAT = SY-DATLO.
|
|
1194| * GT_TABLE-AEZET = SY-TIMLO.
|
|
1195| * ENDIF.
|
|
1196| *
|
|
1197|
|
|
1198| APPEND GT_TABLE.
|
|
1199|
|
|
1200| LV_CNT1 = LV_CNT1 + 1.
|
|
1201|
|
|
1202| ENDIF.
|
|
1203|
|
|
1204| ENDLOOP.
|
|
1205|
|
|
1206| IF LV_CNT1 IS INITIAL.
|
|
1207| LV_TEXT = '저장건이 없습니다'.
|
|
1208| MESSAGE S001 WITH LV_TEXT.
|
|
1209| ENDIF.
|
|
1210|
|
|
1211|
|
|
1212| CHECK GT_TABLE[] IS NOT INITIAL.
|
|
1213|
|
|
1214|
|
|
1215| MODIFY ZFIT0160 FROM TABLE GT_TABLE.
|
|
1216|
|
|
1217| IF SY-SUBRC = 0.
|
|
1218|
|
|
1219| DESCRIBE TABLE GT_MAIN LINES LV_CNT2.
|
|
1220|
|
|
1221| CONCATENATE `전체 ` LV_CNT2 `건 중 ` LV_CNT1 '건 성공하였습니다.'
|
|
1222| INTO LV_TEXT.
|
|
1223| CONDENSE LV_TEXT.
|
|
1224|
|
|
1225| MESSAGE S001 WITH LV_TEXT.
|
|
1226|
|
|
1227| ELSE.
|
|
1228|
|
|
1229| MESSAGE S001 WITH '저장에 실패하였습니다.' DISPLAY LIKE 'E'.
|
|
1230| ROLLBACK WORK.
|
|
1231|
|
|
1232| ENDIF.
|
|
```
|
|
|
|
- **EN**: Only proceeds when validation passed; collects rows with a user ID, bulk-MODIFYs them into the custom authorization table ZFIT0160, and reports counts or rolls back on failure.
|
|
- 테이블(파서): read - / write [ZFIT0160](/tables/ZFIT0160.md)
|
|
- SAP 객체: ZFIT0160, USERID
|
|
- 업무 키워드: 권한저장, 권한테이블, 사용자ID, 일괄저장, 롤백, 저장건수, 권한관리
|
|
- English: authorization save, authority table, user ID, bulk update, rollback, ZFIT0160
|
|
- 정의부(복사 시 함께 필요): [`GV_ERR`](#decl-zfir0160t01-40-gv_err), [`ZFIT0160`](#decl-zfir0160top-5-zfit0160), [`GT_TABLE`](#decl-zfir0160top-39-gt_table), [`GV_CHK`](#decl-zfir0160t01-42-gv_chk), [`LV_TEXT`](#decl-zfir0160f02-1160-lv_text), [`LV_CNT1`](#decl-zfir0160f02-1161-lv_cnt1), [`LV_CNT2`](#decl-zfir0160f02-1162-lv_cnt2), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`LV_TABIX`](#decl-zfir0160f02-1157-lv_tabix), [`LT_SCOL`](#decl-zfir0160f02-1158-lt_scol)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L1165-L1232` · confidence 0.88 · `ZFIR0160#ZFIR0160F02#FORM#SET_SAVE#C1`
|
|
|
|
### FORM SET_ITAB_STYLE — `ZFIR0160F02` L13-L49 (37줄)
|
|
|
|
*GT_MAIN 각 행에 대해 SET_CELLTAB 으로 셀 편집 스타일을 계산해 CELLTAB 에 반영하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 26/37줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] GT_MAIN 의 모든 행을 순회하며 현재 모드(GV_UCOMM)로 SET_CELLTAB 을 호출해 셀 스타일을 만들고 각 행의 CELLTAB 에 삽입 후 MODIFY 한다.
|
|
|
|
```abap
|
|
22| LOOP AT GT_MAIN.
|
|
23| LV_TABIX = SY-TABIX.
|
|
24|
|
|
25| CLEAR: GT_MAIN-CELLTAB,
|
|
26| LS_MAIN, LT_CELLTAB, LT_CELLTAB[], LV_UCOMM.
|
|
27|
|
|
28| MOVE-CORRESPONDING GT_MAIN TO LS_MAIN.
|
|
29|
|
|
30| * 개발번호
|
|
31|
|
|
32|
|
|
33| IF LV_UCOMM IS INITIAL.
|
|
34| LV_UCOMM = GV_UCOMM.
|
|
35| ENDIF.
|
|
36|
|
|
37| * SETTING COLOR
|
|
38|
|
|
39| PERFORM SET_CELLTAB USING LS_MAIN
|
|
40| LV_UCOMM
|
|
41| CHANGING LT_CELLTAB.
|
|
42|
|
|
43| INSERT LINES OF LT_CELLTAB INTO TABLE GT_MAIN-CELLTAB.
|
|
44| MODIFY GT_MAIN INDEX LV_TABIX.
|
|
45|
|
|
46|
|
|
47| ENDLOOP.
|
|
```
|
|
|
|
- **EN**: Loop over GT_MAIN, derive per-cell edit styles via SET_CELLTAB for the current mode and store them in each row's CELLTAB.
|
|
- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md)
|
|
- 호출(파서): SET_CELLTAB
|
|
- 업무 키워드: 행 스타일, 셀 편집 상태, 그리드 갱신
|
|
- English: cell style, ALV editable grid
|
|
- 정의부(복사 시 함께 필요): [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`LV_TABIX`](#decl-zfir0160f02-18-lv_tabix), [`LS_MAIN`](#decl-zfir0160f02-15-ls_main), [`LT_CELLTAB`](#decl-zfir0160f02-17-lt_celltab), [`LV_UCOMM`](#decl-zfir0160f02-20-lv_ucomm), [`GV_UCOMM`](#decl-zfir0160t01-38-gv_ucomm)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L22-L47` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#SET_ITAB_STYLE#C1`
|
|
|
|
### FORM SET_CELLTAB — `ZFIR0160F02` L94-L131 (38줄)
|
|
|
|
*변경 모드(CHAN)에서 필드카탈로그를 순회하며 ZFIR0090 컬럼만 편집 가능하고 나머지는 편집 불가로 셀 스타일(LVC_T_STYL)을 만드는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 26/38줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] GT_FCAT1 의 각 컬럼에 대해 변경 모드(CHAN)일 때 ZFIR0090 필드만 MC_STYLE_ENABLED, 나머지 컬럼은 MC_STYLE_DISABLED 로 셀 스타일을 설정해 P_CELLTAB 에 넣는다.
|
|
|
|
```abap
|
|
104| LOOP AT GT_FCAT1 INTO GS_FCAT.
|
|
105| CLEAR LS_CELLTAB.
|
|
106|
|
|
107| CASE P_UCOMM.
|
|
108|
|
|
109| WHEN 'CHAN'.
|
|
110| IF GS_FCAT-FIELDNAME = 'ZFIR0090'.
|
|
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|
|
|
116|
|
|
117| ELSE.
|
|
118|
|
|
119| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
|
|
120| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME.
|
|
121| LS_CELLTAB-STYLE = LV_MODE.
|
|
122|
|
|
123| ENDIF.
|
|
124|
|
|
125| ENDCASE.
|
|
126|
|
|
127| INSERT LS_CELLTAB INTO TABLE P_CELLTAB.
|
|
128|
|
|
129| ENDLOOP.
|
|
```
|
|
|
|
- **EN**: For each field catalog column in change mode, enable editing only for ZFIR0090 and disable the others by building LVC_S_STYL entries.
|
|
- 호출(파서): CL_GUI_ALV_GRID=>MC_STYLE_ENABLED, CL_GUI_ALV_GRID=>MC_STYLE_DISABLED
|
|
- SAP 객체: CL_GUI_ALV_GRID
|
|
- 업무 키워드: 셀 편집 가능, 셀 스타일, 변경 모드, 권한 항목
|
|
- English: cell style, editable cell, LVC_T_STYL
|
|
- 정의부(복사 시 함께 필요): [`GT_FCAT1`](#decl-zfir0160t01-12-gt_fcat1), [`GS_FCAT`](#decl-zfir0160t01-11-gs_fcat), [`LS_CELLTAB`](#decl-zfir0160f02-98-ls_celltab), [`LV_MODE`](#decl-zfir0160f02-99-lv_mode)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L104-L129` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#SET_CELLTAB#C1`
|
|
|
|
### FORM SET_F4_VARIANT — `ZFIR0160F01` L58-L80 (23줄)
|
|
|
|
*REUSE_ALV_VARIANT_F4 로 ALV 레이아웃 변형 F4 도움말을 제공하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 17/23줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [fm_call] REUSE_ALV_VARIANT_F4 를 호출해 저장된 ALV 레이아웃 변형 목록을 팝업으로 보여주고 선택값을 GX_VARIANT 로 받는다(선택화면 반영 코드는 주석 처리됨).
|
|
|
|
```abap
|
|
62| CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
|
|
63| EXPORTING
|
|
64| IS_VARIANT = GS_VARIANT
|
|
65| I_SAVE = 'A'
|
|
66| IMPORTING
|
|
67| E_EXIT = GV_EXIT
|
|
68| ES_VARIANT = GX_VARIANT
|
|
69| EXCEPTIONS
|
|
70| NOT_FOUND = 1.
|
|
71| IF SY-SUBRC <> 0.
|
|
72| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
|
|
73| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
|
|
74| ELSE.
|
|
75| IF GV_EXIT IS INITIAL.
|
|
76| **** PA_LAYOU = GX_VARIANT-VARIANT.
|
|
77| ENDIF.
|
|
78| ENDIF.
|
|
```
|
|
|
|
- **EN**: Call REUSE_ALV_VARIANT_F4 to offer a value help for saved ALV layout variants and return the chosen variant.
|
|
- 호출(파서): REUSE_ALV_VARIANT_F4
|
|
- SAP 객체: REUSE_ALV_VARIANT_F4
|
|
- 업무 키워드: 레이아웃 변형, F4 도움말, ALV 변형
|
|
- English: ALV layout variant, value help
|
|
- 정의부(복사 시 함께 필요): [`GS_VARIANT`](#decl-zfir0160t01-8-gs_variant), [`GV_EXIT`](#decl-zfir0160t01-24-gv_exit), [`GX_VARIANT`](#decl-zfir0160t01-9-gx_variant)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F01#L62-L78` · confidence 0.85 · `ZFIR0160#ZFIR0160F01#FORM#SET_F4_VARIANT#C1`
|
|
|
|
### FORM SET_POP_MESSAGE — `ZFIR0160F01` L137-L159 (23줄)
|
|
|
|
*POPUP_TO_CONFIRM 으로 예/아니오 확인 팝업을 띄워 사용자 응답(P_ANSWER)을 돌려주는 FORM 이다.*
|
|
|
|
> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [fm_call] POPUP_TO_CONFIRM 을 호출해 전달받은 질문 텍스트로 예/아니오 팝업을 띄우고 응답을 P_ANSWER 로 반환하며 오류 시 시스템 메시지를 출력한다.
|
|
|
|
```abap
|
|
140| CALL FUNCTION 'POPUP_TO_CONFIRM'
|
|
141| EXPORTING
|
|
142| TEXT_QUESTION = P_TEXT
|
|
143| TEXT_BUTTON_1 = '예(Yes)'
|
|
144| TEXT_BUTTON_2 = '아니오(No)'
|
|
145| DEFAULT_BUTTON = '1'
|
|
146| DISPLAY_CANCEL_BUTTON = ''
|
|
147| START_COLUMN = 25
|
|
148| START_ROW = 6
|
|
149| IMPORTING
|
|
150| ANSWER = P_ANSWER
|
|
151| EXCEPTIONS
|
|
152| TEXT_NOT_FOUND = 1
|
|
153| OTHERS = 2.
|
|
154| IF SY-SUBRC <> 0.
|
|
155| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
|
|
156| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
|
|
157| 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-zfir0160top-35-p_answer)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F01#L140-L157` · confidence 0.95 · `ZFIR0160#ZFIR0160F01#FORM#SET_POP_MESSAGE#C1`
|
|
|
|
### FORM RUN_DISPLAY_ALV — `ZFIR0160F02` L549-L571 (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
|
|
551| CASE P_VALUE.
|
|
552| WHEN '0100'.
|
|
553| ASSIGN: GO_GRID TO <FS_GRID>,
|
|
554| GT_MAIN[] TO <FS_TABLE>.
|
|
555| ENDCASE.
|
|
556|
|
|
557| PERFORM SET_EVENT_UCOMM.
|
|
558|
|
|
559| CALL METHOD <FS_GRID>->SET_TABLE_FOR_FIRST_DISPLAY
|
|
560| EXPORTING
|
|
561| I_DEFAULT = 'X'
|
|
562| IS_LAYOUT = GS_LAYOUT
|
|
563| IS_VARIANT = GS_VARIANT
|
|
564| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
|
|
565| I_SAVE = 'A'
|
|
566| CHANGING
|
|
567| IT_OUTTAB = <FS_TABLE>
|
|
568| IT_FIELDCATALOG = <GT_FIELD>
|
|
569| 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, <FS_GRID>->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-zfir0160c01-128-go_grid), [`<FS_GRID>`](#decl-zfir0160t01-64--fs_grid-), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`<FS_TABLE>`](#decl-zfir0160t01-65--fs_table-), [`GS_LAYOUT`](#decl-zfir0160t01-7-gs_layout), [`GS_VARIANT`](#decl-zfir0160t01-8-gs_variant), [`GT_EXCLUDE`](#decl-zfir0160t01-10-gt_exclude), [`<GT_FIELD>`](#decl-zfir0160t01-62--gt_field-), [`GT_SORT`](#decl-zfir0160t01-14-gt_sort)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L551-L569` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#RUN_DISPLAY_ALV#C1`
|
|
|
|
### FORM SET_CHANGE — `ZFIR0160F02` L799-L823 (25줄)
|
|
|
|
*변경/조회 토글(CHAN↔DISP)에 따라 ALV 그리드의 입력 가능 상태를 SET_READY_FOR_INPUT 으로 전환하는 FORM이다.*
|
|
|
|
> 이 unit 의 조각 1개가 17/25줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] 현재 모드가 CHAN 이면 그리드를 읽기전용(0)으로 바꾸고 DISP 로, DISP 이고 잠금(GV_LOCK)이 없으면 입력가능(1)으로 바꾸고 CHAN 으로 토글한다.
|
|
|
|
```abap
|
|
801| CASE GV_UCOMM.
|
|
802| WHEN 'CHAN'.
|
|
803| CALL METHOD GO_GRID->SET_READY_FOR_INPUT
|
|
804| EXPORTING
|
|
805| I_READY_FOR_INPUT = 0.
|
|
806|
|
|
807| GV_UCOMM = 'DISP'.
|
|
808| WHEN 'DISP'.
|
|
809|
|
|
810| IF GV_LOCK IS INITIAL.
|
|
811| CALL METHOD GO_GRID->SET_READY_FOR_INPUT
|
|
812| EXPORTING
|
|
813| I_READY_FOR_INPUT = 1.
|
|
814|
|
|
815| GV_UCOMM = 'CHAN'.
|
|
816| ENDIF.
|
|
817| ENDCASE.
|
|
```
|
|
|
|
- **EN**: Toggle ALV grid edit mode via CL_GUI_ALV_GRID->SET_READY_FOR_INPUT between change (CHAN) and display (DISP), only allowing edit when no lock is set.
|
|
- 호출(파서): GO_GRID->SET_READY_FOR_INPUT, GO_GRID->SET_READY_FOR_INPUT
|
|
- SAP 객체: CL_GUI_ALV_GRID
|
|
- 업무 키워드: 변경 모드, 조회 모드, 입력 가능 전환, 잠금
|
|
- English: edit mode, display mode, ready for input
|
|
- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zfir0160t01-38-gv_ucomm), [`GO_GRID`](#decl-zfir0160c01-128-go_grid), [`GV_LOCK`](#decl-zfir0160t01-43-gv_lock)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160F02#L801-L817` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#SET_CHANGE#C1`
|
|
|
|
### MODULE USER_COMMAND_0100_EXIT INPUT — `ZFIR0160I01` L10-L45 (36줄)
|
|
|
|
*화면 0100 종료 시 변경 여부(GV_CHK)를 확인해 저장 팝업을 띄우고 확인 시 검증·저장 후 화면을 빠져나가는 EXIT 모듈이다.*
|
|
|
|
> 이 unit 의 조각 2개가 23/36줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
|
|
|
|
#### [control_flow] 그리드 변경 플래그(GV_CHK)가 있으면 저장 확인 팝업(SET_POP_MESSAGE)을 띄우고 '예'이면 CHK_DATA 검증 후 SET_SAVE 로 ZFIT0160 에 저장하며, 오류(GV_ERR)가 있으면 화면 종료를 중단한다.
|
|
|
|
```abap
|
|
14| IF GV_CHK IS NOT INITIAL.
|
|
15| PERFORM SET_POP_MESSAGE USING TEXT-100
|
|
16| CHANGING GV_ANSWER.
|
|
17| IF GV_ANSWER = '1'.
|
|
18| PERFORM CHK_DATA.
|
|
19| PERFORM SET_SAVE.
|
|
20|
|
|
21| * PERFORM SET_DATA.
|
|
22| * PERFORM SET_ITAB_STYLE. " CHANGE
|
|
23| * PERFORM SET_REFRESH.
|
|
24|
|
|
25| ELSE.
|
|
26| MESSAGE S001 WITH TEXT-101.
|
|
27| ENDIF.
|
|
28|
|
|
29| CHECK GV_ERR IS INITIAL.
|
|
30| ENDIF.
|
|
```
|
|
|
|
- **EN**: If unsaved changes exist, show a save confirmation popup and on confirmation validate (CHK_DATA) and save to ZFIT0160 (SET_SAVE); abort exit when an error is flagged.
|
|
- 호출(파서): SET_POP_MESSAGE, CHK_DATA, SET_SAVE
|
|
- SAP 객체: ZFIT0160
|
|
- 업무 키워드: 저장 확인, 변경 여부, 권한 테이블 저장, 화면 종료, 오류 체크
|
|
- English: save confirmation, authorization maintenance, screen exit
|
|
- 정의부(복사 시 함께 필요): [`GV_CHK`](#decl-zfir0160t01-42-gv_chk), [`GV_ANSWER`](#decl-zfir0160t01-41-gv_answer), [`GV_ERR`](#decl-zfir0160t01-40-gv_err)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160I01#L14-L30` · confidence 0.85 · `ZFIR0160#ZFIR0160I01#MODULE#USER_COMMAND_0100_EXIT_INPUT#C1`
|
|
|
|
#### [control_flow] 기능코드 BACK/CANCEL(&F03,&F15)이면 화면 0으로 돌아가고 EXIT(&F12)이면 프로그램을 종료한다.
|
|
|
|
```abap
|
|
37| CASE SAVE_OK.
|
|
38| WHEN '&F03' OR '&F15'.
|
|
39| LEAVE TO SCREEN 0.
|
|
40| WHEN '&F12'.
|
|
41| LEAVE PROGRAM.
|
|
42| ENDCASE.
|
|
```
|
|
|
|
- **EN**: Leave to screen 0 on BACK/CANCEL and leave the program on EXIT function codes.
|
|
- 업무 키워드: 화면 종료, 프로그램 종료, 기능코드
|
|
- English: function code, leave screen
|
|
- 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0160t01-36-save_ok)
|
|
- 위치: `abap://ZFIR0160/ZFIR0160I01#L37-L42` · confidence 0.9 · `ZFIR0160#ZFIR0160I01#MODULE#USER_COMMAND_0100_EXIT_INPUT#C2`
|
|
|
|
## 정의부 (109건)
|
|
|
|
로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/<chunk_id>` 의 `declaration_code` 로 받는다.
|
|
|
|
### `ZFIR0160C01` (18건)
|
|
|
|
#### LCL_EVENT_RECEIVER — class · L10-L55 {#decl-zfir0160c01-10-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 · L114-L114 {#decl-zfir0160c01-114-go_custom}
|
|
|
|
```abap
|
|
DATA: GO_CUSTOM TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
|
|
```
|
|
|
|
#### GO_CUSTOM2 — data · L115-L115 {#decl-zfir0160c01-115-go_custom2}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_CUSTOM2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
|
|
```
|
|
|
|
#### GO_DOCKING — data · L117-L117 {#decl-zfir0160c01-117-go_docking}
|
|
|
|
```abap
|
|
DATA: GO_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER.
|
|
```
|
|
|
|
#### GO_DOCKING2 — data · L118-L118 {#decl-zfir0160c01-118-go_docking2}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_DOCKING2 TYPE REF TO CL_GUI_DOCKING_CONTAINER.
|
|
```
|
|
|
|
#### GO_SPLITTER — data · L120-L120 {#decl-zfir0160c01-120-go_splitter}
|
|
|
|
```abap
|
|
DATA: GO_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER.
|
|
```
|
|
|
|
#### GO_SPLITTER2 — data · L121-L121 {#decl-zfir0160c01-121-go_splitter2}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER.
|
|
```
|
|
|
|
#### GO_GRID — data · L128-L128 {#decl-zfir0160c01-128-go_grid}
|
|
|
|
```abap
|
|
DATA: GO_GRID TYPE REF TO CL_GUI_ALV_GRID.
|
|
```
|
|
|
|
#### GO_GRID2 — data · L129-L129 {#decl-zfir0160c01-129-go_grid2}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_GRID2 TYPE REF TO CL_GUI_ALV_GRID.
|
|
```
|
|
|
|
#### GO_GRID3 — data · L130-L130 {#decl-zfir0160c01-130-go_grid3}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_GRID3 TYPE REF TO CL_GUI_ALV_GRID.
|
|
```
|
|
|
|
#### GO_GRID4 — data · L131-L131 {#decl-zfir0160c01-131-go_grid4}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_GRID4 TYPE REF TO CL_GUI_ALV_GRID.
|
|
```
|
|
|
|
#### GO_GRID5 — data · L132-L132 {#decl-zfir0160c01-132-go_grid5}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_GRID5 TYPE REF TO CL_GUI_ALV_GRID.
|
|
```
|
|
|
|
#### GO_CON — data · L134-L134 {#decl-zfir0160c01-134-go_con}
|
|
|
|
```abap
|
|
DATA: GO_CON TYPE REF TO CL_GUI_CONTAINER.
|
|
```
|
|
|
|
#### GO_CON2 — data · L135-L135 {#decl-zfir0160c01-135-go_con2}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_CON2 TYPE REF TO CL_GUI_CONTAINER.
|
|
```
|
|
|
|
#### GO_CON3 — data · L136-L136 {#decl-zfir0160c01-136-go_con3}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_CON3 TYPE REF TO CL_GUI_CONTAINER.
|
|
```
|
|
|
|
#### GO_CON4 — data · L137-L137 {#decl-zfir0160c01-137-go_con4}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_CON4 TYPE REF TO CL_GUI_CONTAINER.
|
|
```
|
|
|
|
#### GO_CON5 — data · L138-L138 {#decl-zfir0160c01-138-go_con5}
|
|
|
|
```abap
|
|
DATA:
|
|
GO_CON5 TYPE REF TO CL_GUI_CONTAINER.
|
|
```
|
|
|
|
#### GO_EVENT — data · L140-L140 {#decl-zfir0160c01-140-go_event}
|
|
|
|
```abap
|
|
DATA: GO_EVENT TYPE REF TO LCL_EVENT_RECEIVER.
|
|
```
|
|
|
|
### `ZFIR0160T01` (36건)
|
|
|
|
#### GS_LAYOUT — data · L7-L7 {#decl-zfir0160t01-7-gs_layout}
|
|
|
|
```abap
|
|
DATA: GS_LAYOUT TYPE LVC_S_LAYO.
|
|
```
|
|
|
|
#### GS_VARIANT — data · L8-L8 {#decl-zfir0160t01-8-gs_variant}
|
|
|
|
```abap
|
|
DATA:
|
|
GS_VARIANT TYPE DISVARIANT.
|
|
```
|
|
|
|
#### GX_VARIANT — data · L9-L9 {#decl-zfir0160t01-9-gx_variant}
|
|
|
|
```abap
|
|
DATA:
|
|
GX_VARIANT TYPE DISVARIANT.
|
|
```
|
|
|
|
#### GT_EXCLUDE — data · L10-L10 {#decl-zfir0160t01-10-gt_exclude}
|
|
|
|
```abap
|
|
DATA:
|
|
GT_EXCLUDE TYPE UI_FUNCTIONS.
|
|
```
|
|
|
|
#### GS_FCAT — data · L11-L11 {#decl-zfir0160t01-11-gs_fcat}
|
|
|
|
```abap
|
|
DATA:
|
|
GS_FCAT TYPE LVC_S_FCAT.
|
|
```
|
|
|
|
#### GT_FCAT1 — data · L12-L12 {#decl-zfir0160t01-12-gt_fcat1}
|
|
|
|
```abap
|
|
DATA:
|
|
GT_FCAT1 TYPE LVC_T_FCAT.
|
|
```
|
|
|
|
#### GS_SORT — data · L13-L13 {#decl-zfir0160t01-13-gs_sort}
|
|
|
|
```abap
|
|
DATA:
|
|
GS_SORT TYPE LVC_S_SORT.
|
|
```
|
|
|
|
#### GT_SORT — data · L14-L14 {#decl-zfir0160t01-14-gt_sort}
|
|
|
|
```abap
|
|
DATA:
|
|
GT_SORT TYPE LVC_T_SORT.
|
|
```
|
|
|
|
#### GS_GLAY — data · L15-L15 {#decl-zfir0160t01-15-gs_glay}
|
|
|
|
```abap
|
|
DATA:
|
|
GS_GLAY TYPE LVC_S_GLAY.
|
|
```
|
|
|
|
#### GT_HEAD — data · L16-L16 {#decl-zfir0160t01-16-gt_head}
|
|
|
|
```abap
|
|
DATA:
|
|
GT_HEAD TYPE LVC_T_HEAD.
|
|
```
|
|
|
|
#### GS_HEAD — data · L17-L17 {#decl-zfir0160t01-17-gs_head}
|
|
|
|
```abap
|
|
DATA:
|
|
GS_HEAD TYPE LVC_S_HEAD.
|
|
```
|
|
|
|
#### GS_EVENT — data · L18-L18 {#decl-zfir0160t01-18-gs_event}
|
|
|
|
```abap
|
|
DATA:
|
|
GS_EVENT TYPE LVC_S_EVTS.
|
|
```
|
|
|
|
#### GT_EVENT — data · L19-L19 {#decl-zfir0160t01-19-gt_event}
|
|
|
|
```abap
|
|
DATA:
|
|
GT_EVENT TYPE LVC_T_EVTS.
|
|
```
|
|
|
|
#### GS_STBL — data · L20-L20 {#decl-zfir0160t01-20-gs_stbl}
|
|
|
|
```abap
|
|
DATA:
|
|
GS_STBL TYPE LVC_S_STBL. " Refresh stability.
|
|
```
|
|
|
|
#### G_REPID — data · L22-L22 {#decl-zfir0160t01-22-g_repid}
|
|
|
|
```abap
|
|
DATA: G_REPID TYPE SY-REPID.
|
|
```
|
|
|
|
#### G_TABNAME — data · L23-L23 {#decl-zfir0160t01-23-g_tabname}
|
|
|
|
```abap
|
|
DATA:
|
|
G_TABNAME TYPE SLIS_TABNAME.
|
|
```
|
|
|
|
#### GV_EXIT — data · L24-L24 {#decl-zfir0160t01-24-gv_exit}
|
|
|
|
```abap
|
|
DATA:
|
|
GV_EXIT TYPE C.
|
|
```
|
|
|
|
#### GS_F4 — data · L26-L26 {#decl-zfir0160t01-26-gs_f4}
|
|
|
|
```abap
|
|
DATA: GS_F4 TYPE LVC_S_F4. " F4 ## ##
|
|
```
|
|
|
|
#### GT_F4 — data · L27-L27 {#decl-zfir0160t01-27-gt_f4}
|
|
|
|
```abap
|
|
DATA:
|
|
GT_F4 TYPE LVC_T_F4.
|
|
```
|
|
|
|
#### OK_CODE — data · L35-L35 {#decl-zfir0160t01-35-ok_code}
|
|
|
|
```abap
|
|
DATA: OK_CODE TYPE SY-UCOMM.
|
|
```
|
|
|
|
#### SAVE_OK — data · L36-L36 {#decl-zfir0160t01-36-save_ok}
|
|
|
|
```abap
|
|
DATA:
|
|
SAVE_OK TYPE SY-UCOMM.
|
|
```
|
|
|
|
#### GV_UCOMM — data · L38-L38 {#decl-zfir0160t01-38-gv_ucomm}
|
|
|
|
```abap
|
|
DATA: GV_UCOMM TYPE SY-UCOMM. " COMMAND
|
|
```
|
|
|
|
#### GS_MSG — data · L39-L39 {#decl-zfir0160t01-39-gs_msg}
|
|
|
|
```abap
|
|
DATA:
|
|
GS_MSG LIKE FIMSG. " MESSSAGE
|
|
```
|
|
|
|
#### GV_ERR — data · L40-L40 {#decl-zfir0160t01-40-gv_err}
|
|
|
|
```abap
|
|
DATA:
|
|
GV_ERR TYPE C. " ERROR
|
|
```
|
|
|
|
#### GV_ANSWER — data · L41-L41 {#decl-zfir0160t01-41-gv_answer}
|
|
|
|
```abap
|
|
DATA:
|
|
GV_ANSWER TYPE C. " MESSAGE
|
|
```
|
|
|
|
#### GV_CHK — data · L42-L42 {#decl-zfir0160t01-42-gv_chk}
|
|
|
|
```abap
|
|
DATA:
|
|
GV_CHK TYPE C. " CHANGE
|
|
```
|
|
|
|
#### GV_LOCK — data · L43-L43 {#decl-zfir0160t01-43-gv_lock}
|
|
|
|
```abap
|
|
DATA:
|
|
GV_LOCK TYPE C.
|
|
```
|
|
|
|
#### GV_MNAME — data · L44-L44 {#decl-zfir0160t01-44-gv_mname}
|
|
|
|
```abap
|
|
DATA:
|
|
GV_MNAME TYPE STRING.
|
|
```
|
|
|
|
#### GC_YEL — constants · L51-L51 {#decl-zfir0160t01-51-gc_yel}
|
|
|
|
```abap
|
|
CONSTANTS: GC_YEL(4) VALUE '@09@'. " ICON_LED_YELLOW
|
|
```
|
|
|
|
#### GC_GRE — constants · L52-L52 {#decl-zfir0160t01-52-gc_gre}
|
|
|
|
```abap
|
|
CONSTANTS:
|
|
GC_GRE(4) VALUE '@08@'. " ICON_LED_GREEN
|
|
```
|
|
|
|
#### GC_OUT — constants · L53-L53 {#decl-zfir0160t01-53-gc_out}
|
|
|
|
```abap
|
|
CONSTANTS:
|
|
GC_OUT(4) VALUE '@EB@'. " ICON_LED_LIGHT_OUT
|
|
```
|
|
|
|
#### GC_RED — constants · L54-L54 {#decl-zfir0160t01-54-gc_red}
|
|
|
|
```abap
|
|
CONSTANTS:
|
|
GC_RED(4) VALUE '@0A@'. " ICON_LED_RED
|
|
```
|
|
|
|
#### <GS_FIELD> — field-symbol · L61-L61 {#decl-zfir0160t01-61--gs_field-}
|
|
|
|
```abap
|
|
FIELD-SYMBOLS: <GS_FIELD> TYPE LVC_S_FCAT.
|
|
```
|
|
|
|
#### <GT_FIELD> — field-symbol · L62-L62 {#decl-zfir0160t01-62--gt_field-}
|
|
|
|
```abap
|
|
FIELD-SYMBOLS:
|
|
<GT_FIELD> TYPE LVC_T_FCAT.
|
|
```
|
|
|
|
#### <FS_GRID> — field-symbol · L64-L64 {#decl-zfir0160t01-64--fs_grid-}
|
|
|
|
```abap
|
|
FIELD-SYMBOLS: <FS_GRID> TYPE REF TO CL_GUI_ALV_GRID.
|
|
```
|
|
|
|
#### <FS_TABLE> — field-symbol · L65-L65 {#decl-zfir0160t01-65--fs_table-}
|
|
|
|
```abap
|
|
FIELD-SYMBOLS:
|
|
<FS_TABLE> TYPE TABLE.
|
|
```
|
|
|
|
### `ZFIR0160TOP` (21건)
|
|
|
|
#### BKPF — tables · L5-L5 {#decl-zfir0160top-5-bkpf}
|
|
|
|
```abap
|
|
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
|
|
```
|
|
|
|
#### BSAK — tables · L5-L5 {#decl-zfir0160top-5-bsak}
|
|
|
|
```abap
|
|
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
|
|
```
|
|
|
|
#### BSEG — tables · L5-L5 {#decl-zfir0160top-5-bseg}
|
|
|
|
```abap
|
|
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
|
|
```
|
|
|
|
#### BSIK — tables · L5-L5 {#decl-zfir0160top-5-bsik}
|
|
|
|
```abap
|
|
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
|
|
```
|
|
|
|
#### BSIS — tables · L5-L5 {#decl-zfir0160top-5-bsis}
|
|
|
|
```abap
|
|
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
|
|
```
|
|
|
|
#### T012K — tables · L5-L5 {#decl-zfir0160top-5-t012k}
|
|
|
|
```abap
|
|
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
|
|
```
|
|
|
|
#### ZFIT0160 — tables · L5-L5 {#decl-zfir0160top-5-zfit0160}
|
|
|
|
```abap
|
|
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
|
|
```
|
|
|
|
#### ICON — type-pool · L7-L7 {#decl-zfir0160top-7-icon}
|
|
|
|
```abap
|
|
TYPE-POOLS: SLIS, ICON.
|
|
```
|
|
|
|
#### SLIS — type-pool · L7-L7 {#decl-zfir0160top-7-slis}
|
|
|
|
```abap
|
|
TYPE-POOLS: SLIS, ICON.
|
|
```
|
|
|
|
#### IT_T012K — data · L10-L12 {#decl-zfir0160top-10-it_t012k}
|
|
|
|
```abap
|
|
DATA: BEGIN OF IT_T012K OCCURS 0.
|
|
INCLUDE STRUCTURE T012K.
|
|
DATA END OF IT_T012K.
|
|
```
|
|
|
|
#### IT_ZFIT0160 — data · L14-L16 {#decl-zfir0160top-14-it_zfit0160}
|
|
|
|
```abap
|
|
DATA: BEGIN OF IT_ZFIT0160 OCCURS 0.
|
|
INCLUDE STRUCTURE ZFIT0160.
|
|
DATA END OF IT_ZFIT0160.
|
|
```
|
|
|
|
#### GT_MAIN — data · L19-L28 {#decl-zfir0160top-19-gt_main}
|
|
|
|
```abap
|
|
DATA: BEGIN OF GT_MAIN OCCURS 0,
|
|
MARK LIKE ICON-STATUS,
|
|
USERID LIKE ZFIT0160-USERID,
|
|
NAME(20),
|
|
ZFIR0090 LIKE ZFIT0160-ZFIR0090.
|
|
|
|
|
|
DATA: CELLTAB TYPE LVC_T_STYL,
|
|
SCOL TYPE LVC_T_SCOL,
|
|
END OF GT_MAIN.
|
|
```
|
|
|
|
#### GT_IMSI — data · L31-L31 {#decl-zfir0160top-31-gt_imsi}
|
|
|
|
```abap
|
|
DATA: GT_IMSI LIKE TABLE OF GT_MAIN WITH HEADER LINE.
|
|
```
|
|
|
|
#### GT_IMSI1 — data · L32-L32 {#decl-zfir0160top-32-gt_imsi1}
|
|
|
|
```abap
|
|
DATA: GT_IMSI1 LIKE TABLE OF GT_MAIN WITH HEADER LINE.
|
|
```
|
|
|
|
#### P_ANSWER — data · L35-L35 {#decl-zfir0160top-35-p_answer}
|
|
|
|
```abap
|
|
DATA: P_ANSWER.
|
|
```
|
|
|
|
#### TMP_MAIN — data · L37-L37 {#decl-zfir0160top-37-tmp_main}
|
|
|
|
```abap
|
|
DATA: TMP_MAIN LIKE TABLE OF GT_MAIN WITH HEADER LINE.
|
|
```
|
|
|
|
#### GT_TABLE — data · L39-L39 {#decl-zfir0160top-39-gt_table}
|
|
|
|
```abap
|
|
DATA: GT_TABLE LIKE TABLE OF ZFIT0160 WITH HEADER LINE.
|
|
```
|
|
|
|
#### GT_ANY — data · L41-L41 {#decl-zfir0160top-41-gt_any}
|
|
|
|
```abap
|
|
DATA GT_ANY TYPE REF TO DATA.
|
|
```
|
|
|
|
#### I_TABNAM — data · L42-L42 {#decl-zfir0160top-42-i_tabnam}
|
|
|
|
```abap
|
|
DATA I_TABNAM TYPE TABNAME16.
|
|
```
|
|
|
|
#### <FS_S> — field-symbol · L44-L44 {#decl-zfir0160top-44--fs_s-}
|
|
|
|
```abap
|
|
FIELD-SYMBOLS: <FS_S> TYPE ANY.
|
|
```
|
|
|
|
#### <FS_T> — field-symbol · L45-L45 {#decl-zfir0160top-45--fs_t-}
|
|
|
|
```abap
|
|
FIELD-SYMBOLS:
|
|
<FS_T> TYPE ANY TABLE.
|
|
```
|
|
|
|
### `ZFIR0160F01` (4건)
|
|
|
|
#### L_TABIX — data · unit 로컬 · L177-L177 {#decl-zfir0160f01-177-l_tabix}
|
|
|
|
```abap
|
|
DATA: L_TABIX LIKE SY-TABIX.
|
|
```
|
|
|
|
#### L_DEFAULTOPTION — data · unit 로컬 · L205-L205 {#decl-zfir0160f01-205-l_defaultoption}
|
|
|
|
```abap
|
|
DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70).
|
|
```
|
|
|
|
#### L_TEXTLINE1 — data · unit 로컬 · L205-L205 {#decl-zfir0160f01-205-l_textline1}
|
|
|
|
```abap
|
|
DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70).
|
|
```
|
|
|
|
#### L_TEXTLINE2 — data · unit 로컬 · L205-L205 {#decl-zfir0160f01-205-l_textline2}
|
|
|
|
```abap
|
|
DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70).
|
|
```
|
|
|
|
### `ZFIR0160F02` (30건)
|
|
|
|
#### LS_MAIN — data · unit 로컬 · L15-L15 {#decl-zfir0160f02-15-ls_main}
|
|
|
|
```abap
|
|
DATA: LS_MAIN LIKE GT_MAIN.
|
|
```
|
|
|
|
#### LT_CELLTAB — data · unit 로컬 · L17-L17 {#decl-zfir0160f02-17-lt_celltab}
|
|
|
|
```abap
|
|
DATA: LT_CELLTAB TYPE LVC_T_STYL.
|
|
```
|
|
|
|
#### LV_TABIX — data · unit 로컬 · L18-L18 {#decl-zfir0160f02-18-lv_tabix}
|
|
|
|
```abap
|
|
DATA:
|
|
LV_TABIX TYPE SY-TABIX.
|
|
```
|
|
|
|
#### LV_UCOMM — data · unit 로컬 · L20-L20 {#decl-zfir0160f02-20-lv_ucomm}
|
|
|
|
```abap
|
|
DATA: LV_UCOMM TYPE SY-UCOMM.
|
|
```
|
|
|
|
#### LS_MAIN — data · unit 로컬 · L56-L56 {#decl-zfir0160f02-56-ls_main}
|
|
|
|
```abap
|
|
DATA: LS_MAIN LIKE GT_MAIN.
|
|
```
|
|
|
|
#### LT_CELLTAB — data · unit 로컬 · L58-L58 {#decl-zfir0160f02-58-lt_celltab}
|
|
|
|
```abap
|
|
DATA: LT_CELLTAB TYPE LVC_T_STYL.
|
|
```
|
|
|
|
#### LV_TABIX — data · unit 로컬 · L59-L59 {#decl-zfir0160f02-59-lv_tabix}
|
|
|
|
```abap
|
|
DATA:
|
|
LV_TABIX TYPE SY-TABIX.
|
|
```
|
|
|
|
#### LV_UCOMM — data · unit 로컬 · L61-L61 {#decl-zfir0160f02-61-lv_ucomm}
|
|
|
|
```abap
|
|
DATA: LV_UCOMM TYPE SY-UCOMM.
|
|
```
|
|
|
|
#### LS_CELLTAB — data · unit 로컬 · L98-L98 {#decl-zfir0160f02-98-ls_celltab}
|
|
|
|
```abap
|
|
DATA: LS_CELLTAB TYPE LVC_S_STYL.
|
|
```
|
|
|
|
#### LV_MODE — data · unit 로컬 · L99-L99 {#decl-zfir0160f02-99-lv_mode}
|
|
|
|
```abap
|
|
DATA:
|
|
LV_MODE TYPE RAW4.
|
|
```
|
|
|
|
#### LS_CELLTAB — data · unit 로컬 · L140-L140 {#decl-zfir0160f02-140-ls_celltab}
|
|
|
|
```abap
|
|
DATA: LS_CELLTAB TYPE LVC_S_STYL.
|
|
```
|
|
|
|
#### LV_MODE — data · unit 로컬 · L141-L141 {#decl-zfir0160f02-141-lv_mode}
|
|
|
|
```abap
|
|
DATA:
|
|
LV_MODE TYPE RAW4.
|
|
```
|
|
|
|
#### LT_ROWS — data · unit 로컬 · L836-L836 {#decl-zfir0160f02-836-lt_rows}
|
|
|
|
```abap
|
|
DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행
|
|
```
|
|
|
|
#### LS_ROWS — data · unit 로컬 · L837-L837 {#decl-zfir0160f02-837-ls_rows}
|
|
|
|
```abap
|
|
DATA:
|
|
LS_ROWS TYPE LVC_S_ROW.
|
|
```
|
|
|
|
#### LV_CNT — data · unit 로컬 · L839-L839 {#decl-zfir0160f02-839-lv_cnt}
|
|
|
|
```abap
|
|
DATA: LV_CNT TYPE STRING.
|
|
```
|
|
|
|
#### LT_ROWS — data · unit 로컬 · L896-L896 {#decl-zfir0160f02-896-lt_rows}
|
|
|
|
```abap
|
|
DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행
|
|
```
|
|
|
|
#### LS_ROWS — data · unit 로컬 · L897-L897 {#decl-zfir0160f02-897-ls_rows}
|
|
|
|
```abap
|
|
DATA:
|
|
LS_ROWS TYPE LVC_S_ROW.
|
|
```
|
|
|
|
#### LS_MOD_CELLS — data · unit 로컬 · L942-L942 {#decl-zfir0160f02-942-ls_mod_cells}
|
|
|
|
```abap
|
|
DATA: LS_MOD_CELLS TYPE LVC_S_MODI.
|
|
```
|
|
|
|
#### <FS_FIELD> — field-symbol · unit 로컬 · L946-L946 {#decl-zfir0160f02-946--fs_field-}
|
|
|
|
```abap
|
|
FIELD-SYMBOLS: <FS_FIELD> TYPE ANY.
|
|
```
|
|
|
|
#### LV_TABIX — data · unit 로컬 · L1157-L1157 {#decl-zfir0160f02-1157-lv_tabix}
|
|
|
|
```abap
|
|
DATA: LV_TABIX TYPE SY-TABIX.
|
|
```
|
|
|
|
#### LT_SCOL — data · unit 로컬 · L1158-L1158 {#decl-zfir0160f02-1158-lt_scol}
|
|
|
|
```abap
|
|
DATA:
|
|
LT_SCOL TYPE LVC_T_SCOL.
|
|
```
|
|
|
|
#### LV_TEXT — data · unit 로컬 · L1160-L1160 {#decl-zfir0160f02-1160-lv_text}
|
|
|
|
```abap
|
|
DATA: LV_TEXT TYPE STRING.
|
|
```
|
|
|
|
#### LV_CNT1 — data · unit 로컬 · L1161-L1161 {#decl-zfir0160f02-1161-lv_cnt1}
|
|
|
|
```abap
|
|
DATA:
|
|
LV_CNT1 TYPE STRING. " 성공
|
|
```
|
|
|
|
#### LV_CNT2 — data · unit 로컬 · L1162-L1162 {#decl-zfir0160f02-1162-lv_cnt2}
|
|
|
|
```abap
|
|
DATA:
|
|
LV_CNT2 TYPE STRING. " 실패
|
|
```
|
|
|
|
#### SELECTFIELD — data · unit 로컬 · L1327-L1327 {#decl-zfir0160f02-1327-selectfield}
|
|
|
|
```abap
|
|
DATA : SELECTFIELD LIKE HELP_INFO-FIELDNAME.
|
|
```
|
|
|
|
#### IT_FIELDS — data · unit 로컬 · L1328-L1328 {#decl-zfir0160f02-1328-it_fields}
|
|
|
|
```abap
|
|
DATA:
|
|
IT_FIELDS LIKE HELP_VALUE OCCURS 1 WITH HEADER LINE.
|
|
```
|
|
|
|
#### SELECT_VALUE — data · unit 로컬 · L1329-L1329 {#decl-zfir0160f02-1329-select_value}
|
|
|
|
```abap
|
|
DATA:
|
|
SELECT_VALUE LIKE HELP_INFO-FLDVALUE.
|
|
```
|
|
|
|
#### LD_TABIX — data · unit 로컬 · L1330-L1330 {#decl-zfir0160f02-1330-ld_tabix}
|
|
|
|
```abap
|
|
DATA:
|
|
LD_TABIX LIKE SY-TABIX.
|
|
```
|
|
|
|
#### IT_USER — data · unit 로컬 · L1336-L1339 {#decl-zfir0160f02-1336-it_user}
|
|
|
|
```abap
|
|
DATA : BEGIN OF IT_USER OCCURS 0,
|
|
BNAME LIKE USER_ADDRP-BNAME,
|
|
NAME_TEXT LIKE USER_ADDRP-NAME_LAST,
|
|
END OF IT_USER.
|
|
```
|
|
|
|
#### IT_VALUE — data · unit 로컬 · L1341-L1344 {#decl-zfir0160f02-1341-it_value}
|
|
|
|
```abap
|
|
DATA : BEGIN OF IT_VALUE OCCURS 0,
|
|
TEXT1(12),
|
|
TEXT2(80),
|
|
END OF IT_VALUE.
|
|
```
|
|
|
|
## Unit 목록 (컨테이너)
|
|
|
|
| unit | 유형 | 위치 | 조각 | 한 줄 요약 |
|
|
|---|---|---|---|---|
|
|
| INITIALIZATION | EVENT | ZFIR0160 L36-42 | 0 | INITIALIZATION 에서 SET_INIT 을 호출해 초기값을 설정하는 플러밍 블록이다. |
|
|
| AT SELECTION-SCREEN | EVENT | ZFIR0160 L43-50 | 0 | AT SELECTION-SCREEN 이벤트에서 GET_VARIANT(빈 FORM)를 호출하는 플러밍 블록이다. |
|
|
| START-OF-SELECTION | EVENT | ZFIR0160 L51-61 | 0 | START-OF-SELECTION 에서 SET_DATA(ZFIT0160 조회)와 MODIFY_PROCESS(성명 보완)를 호출하는 디스패치 블록이다. |
|
|
| END-OF-SELECTION | EVENT | ZFIR0160 L62-65 | 0 | END-OF-SELECTION 에서 권한 관리 화면 0100 을 호출하는 플러밍 블록이다. |
|
|
| LCL_EVENT_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZFIR0160C01 L67-69 | 0 | |
|
|
| LCL_EVENT_RECEIVER~HANDLE_ON_F4 | METHOD | ZFIR0160C01 L73-84 | 0 | |
|
|
| LCL_EVENT_RECEIVER~HANDLE_ON_TOOLBAR | METHOD | ZFIR0160C01 L88-92 | 0 | |
|
|
| LCL_EVENT_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZFIR0160C01 L96-98 | 0 | |
|
|
| LCL_EVENT_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0160C01 L102-106 | 0 | |
|
|
| SET_INIT | FORM | ZFIR0160F01 L7-15 | 0 | 프로그램 ID 와 초기 모드(DISP 조회)를 설정하고 초기 레이아웃 변형을 불러오는 초기화 FORM이다. |
|
|
| SET_INIT_VARIANT | FORM | ZFIR0160F01 L20-29 | 0 | ALV 변형 구조 GS_VARIANT 에 리포트 ID·사용자·핸들 0010 을 세팅하는 ALV 설정 FORM이다. |
|
|
| GET_INIT_VARIANT | FORM | ZFIR0160F01 L34-53 | 1 | 변형 키를 초기화하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형(Variant)을 조회하는 FORM 이다. |
|
|
| SET_F4_VARIANT | FORM | ZFIR0160F01 L58-80 | 1 | REUSE_ALV_VARIANT_F4 로 ALV 레이아웃 변형 F4 도움말을 제공하는 FORM이다. |
|
|
| GET_VARIANT | FORM | ZFIR0160F01 L85-86 | 0 | 본문이 비어 있는 GET_VARIANT FORM으로 아무 동작도 하지 않는다. |
|
|
| SET_DATA | FORM | ZFIR0160F01 L91-109 | 1 | 오류가 없을 때 진행 메시지를 띄우고 SELECT_PROCESS(ZFIT0160 조회)와 MODIFY_PROCESS(성명 보완)를 순서대로 수행해 그리드 데이터를 준비하는 FORM이다. |
|
|
| RUN_MSG_PROC | FORM | ZFIR0160F01 L119-126 | 0 | SAPGUI_PROGRESS_INDICATOR 로 진행 메시지를 표시하는 유틸리티 FORM이다. |
|
|
| SET_POP_MESSAGE | FORM | ZFIR0160F01 L137-159 | 1 | POPUP_TO_CONFIRM 으로 예/아니오 확인 팝업을 띄워 사용자 응답(P_ANSWER)을 돌려주는 FORM 이다. |
|
|
| SELECT_PROCESS | FORM | ZFIR0160F01 L164-170 | 0 | ZFIT0160_PROCESS 를 호출해 권한 데이터를 조회하는 단순 위임 FORM이다. |
|
|
| MODIFY_PROCESS | FORM | ZFIR0160F01 L174-195 | 1 | GT_MAIN 의 각 사용자 ID 에 대해 공용 풀(ZTR_POOL)의 USER_ADDRP_PROCESS 로 성명을 조회해 NAME 컬럼을 채우는 FORM이다. |
|
|
| POPUP_TO_CONFIRM | FORM | ZFIR0160F01 L203-239 | 1 | 저장/삭제/역분개 기능코드에 맞는 문구로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답을 돌려주는 FORM이다. |
|
|
| ZFIT0160_PROCESS | FORM | ZFIR0160F01 L243-256 | 1 | 권한 테이블 ZFIT0160 전체를 읽어 그리드 내부테이블 GT_MAIN 에 적재하는 FORM이다. |
|
|
| SET_ITAB_STYLE | FORM | ZFIR0160F02 L13-49 | 1 | GT_MAIN 각 행에 대해 SET_CELLTAB 으로 셀 편집 스타일을 계산해 CELLTAB 에 반영하는 FORM이다. |
|
|
| SET_LINE_ITAB_STYLE | FORM | ZFIR0160F02 L54-88 | 1 | 현재 GT_MAIN 행 하나에 SET_LINE_CELLTAB 으로 신규 행 셀 스타일을 계산해 CELLTAB 에 반영하는 FORM이다. |
|
|
| SET_CELLTAB | FORM | ZFIR0160F02 L94-131 | 1 | 변경 모드(CHAN)에서 필드카탈로그를 순회하며 ZFIR0090 컬럼만 편집 가능하고 나머지는 편집 불가로 셀 스타일(LVC_T_STYL)을 만드는 FORM이다. |
|
|
| SET_LINE_CELLTAB | FORM | ZFIR0160F02 L136-172 | 1 | 행 삽입/복사(INSE/COPY)된 신규 행에 대해 USERID·ZFIR0090 컬럼만 편집 가능하도록 셀 스타일(LVC_T_STYL)을 만드는 FORM이다. |
|
|
| SET_CONTAINER | FORM | ZFIR0160F02 L184-196 | 0 | 컨테이너 생성→툴바 제외→레이아웃→필드카탈로그→이벤트→ALV 표시 순으로 화면 0100 ALV 구성을 호출하는 디스패치 FORM이다. |
|
|
| SET_FRAME | FORM | ZFIR0160F02 L207-217 | 0 | 커스텀 컨테이너 CON_0100 과 ALV 그리드 객체를 생성하는 플러밍 FORM이다. |
|
|
| SET_VARIANT | FORM | ZFIR0160F02 L227-236 | 0 | ALV 변형 구조 GS_VARIANT 에 리포트 ID·사용자·핸들을 세팅하는 ALV 설정 FORM이다. |
|
|
| SET_TOOLBAR_EXCLUDE | FORM | ZFIR0160F02 L247-410 | 0 | ALV 표준 툴바에서 로컬 편집 기능(UNDO·복사·잘라내기·행 삽입/삭제/추가·붙여넣기·REFRESH)을 제외 목록 GT_EXCLUDE 에 담는 FORM이다. |
|
|
| SET_LAYOUT | FORM | ZFIR0160F02 L420-437 | 0 | ALV 레이아웃(열너비 최적화, 선택모드 D, 셀 스타일 CELLTAB, 색상 SCOL)을 설정하는 FORM이다. |
|
|
| SET_FIELDCATALOG | FORM | ZFIR0160F02 L447-460 | 0 | 화면 0100 용 필드카탈로그 GT_FCAT1 을 필드심볼에 할당하고 SET_FIELD01 로 정의하는 ALV 설정 FORM이다. |
|
|
| SET_FIELD01 | FORM | ZFIR0160F02 L471-502 | 0 | 권한 그리드의 필드카탈로그(USERID·NAME·ZFIR0090 체크박스)를 SET_FIELD 로 정의하는 ALV 설정 FORM이다. |
|
|
| SET_FIELD | FORM | ZFIR0160F02 L514-539 | 0 | 필드카탈로그 구조의 특정 필드를 동적 ASSIGN 으로 채우고 S/E 타입에 따라 초기화·APPEND 하는 필드카탈로그 빌더 유틸리티 FORM이다. |
|
|
| RUN_DISPLAY_ALV | FORM | ZFIR0160F02 L549-571 | 1 | 화면 0100 용 그리드(GO_GRID)와 GT_MAIN 을 할당하고 이벤트 등록 후 SET_TABLE_FOR_FIRST_DISPLAY 로 편집 가능한 ALV 를 최초 표시한다. |
|
|
| SET_EVENT_UCOMM | FORM | ZFIR0160F02 L582-614 | 0 | 그리드를 읽기전용으로 초기화하고 MODIFIED/ENTER 편집 이벤트를 등록하며 변경 감지·포커스를 설정하는 ALV 이벤트 등록 FORM이다. |
|
|
| SET_EVENT | FORM | ZFIR0160F02 L624-636 | 0 | 이벤트 핸들러 객체를 생성하고 F4·DATA_CHANGED·USER_COMMAND·TOOLBAR·DOUBLE_CLICK 핸들러를 그리드에 등록하는 플러밍 FORM이다. |
|
|
| SET_REFRESH | FORM | ZFIR0160F02 L647-670 | 0 | 프론트엔드 레이아웃을 재설정하고 REFRESH_TABLE_DISPLAY(행·열 안정)와 CL_GUI_CFW=>FLUSH 로 ALV 그리드를 갱신하는 플러밍 FORM이다. |
|
|
| TOOLBAR | FORM | ZFIR0160F02 L682-736 | 0 | ALV 툴바에 행 삽입·삭제·복사·저장 버튼을 추가하고 조회 모드(DISP)에서는 비활성화하는 툴바 설정 FORM이다. |
|
|
| USER_COMMAND | FORM | ZFIR0160F02 L746-788 | 1 | ALV 툴바 기능코드(INSE/DELE/COPY/SAVE)별로 행 삽입·삭제·복사·저장 처리를 분기하는 USER_COMMAND 핸들러이다. |
|
|
| SET_CHANGE | FORM | ZFIR0160F02 L799-823 | 1 | 변경/조회 토글(CHAN↔DISP)에 따라 ALV 그리드의 입력 가능 상태를 SET_READY_FOR_INPUT 으로 전환하는 FORM이다. |
|
|
| SET_DELETE_ROWS | FORM | ZFIR0160F02 L834-883 | 2 | 그리드에서 선택한 사용자 행을 GT_MAIN 과 권한 테이블 ZFIT0160 에서 즉시 삭제하고 건수를 메시지로 알리는 FORM이다. |
|
|
| SET_COPY_ROWS | FORM | ZFIR0160F02 L894-929 | 1 | 그리드에서 선택한 행들을 복사해 GT_MAIN 에 새 행으로 추가하고 편집 스타일을 부여하는 FORM이다. |
|
|
| DATA_CHANGED | FORM | ZFIR0160F02 L939-1028 | 1 | 편집 그리드 셀 변경(DATA_CHANGED) 시 변경값을 GT_MAIN 에 반영하고 ZINOUT 값을 검증해 오류면 프로토콜에 기록, 정상이면 셀을 갱신하는 FORM이다. |
|
|
| CHK_ZINOUT | FORM | ZFIR0160F02 L1042-1064 | 1 | 입출구분자(ZINOUT) 값이 허용 코드(11,12,13,14,51~55,57) 중 하나인지 검증하고 아니면 오류 플래그와 메시지를 돌려주는 FORM이다. |
|
|
| ADD_PROTOCAL_ENTRY | FORM | ZFIR0160F02 L1076-1096 | 1 | 편집 ALV 의 셀 검증 오류를 CL_ALV_CHANGED_DATA_PROTOCOL->ADD_PROTOCOL_ENTRY 로 오류 로그(메시지 00/E)에 추가하는 FORM 이다. |
|
|
| HANDLE_DOUBLE_CLICK | FORM | ZFIR0160F02 L1108-1122 | 0 | ALV 더블클릭 이벤트 핸들러로, 선택 행을 읽지만 실제 후속 처리(FB03 호출)는 주석 처리되어 동작이 없다. |
|
|
| CHK_DATA | FORM | ZFIR0160F02 L1133-1144 | 0 | 저장 전 데이터 검증용 FORM이나 검증 로직(개발항목 필수 체크)이 전부 주석 처리되어 현재는 아무 동작도 하지 않는다. |
|
|
| SET_SAVE | FORM | ZFIR0160F02 L1155-1234 | 1 | 편집한 권한 내역을 검증 통과 시에만 권한 테이블 ZFIT0160 에 일괄 저장하고 결과를 건수로 알린다. |
|
|
| GET_COLOR | FORM | ZFIR0160F02 L1245-1260 | 0 | DEVNUM 컬럼에 색상(COL 6)을 지정하는 ALV 셀 색상 설정 FORM이다. |
|
|
| ON_F4 | FORM | ZFIR0160F02 L1264-1288 | 0 | ALV ONF4 이벤트 핸들러로 USERID 필드일 때 F4_UNAME_PROCESS 를 호출하는 단순 분기 FORM이다. |
|
|
| F4_FIELD_ENTRY_PART | FORM | ZFIR0160F02 L1297-1309 | 0 | 편집 ALV 그리드의 USERID 컬럼에 F4 도움말을 등록하는 플러밍 FORM이다. |
|
|
| F4_UNAME_PROCESS | FORM | ZFIR0160F02 L1314-1417 | 3 | USERID 셀의 F4 도움말로 USER_ADDRP 사용자 목록을 HELP_VALUES_GET_NO_DD_NAME 팝업으로 보여주고 선택값과 성명을 GT_MAIN 행에 반영하는 FORM이다. |
|
|
| USER_COMMAND_0100_EXIT INPUT | MODULE | ZFIR0160I01 L10-45 | 2 | 화면 0100 종료 시 변경 여부(GV_CHK)를 확인해 저장 팝업을 띄우고 확인 시 검증·저장 후 화면을 빠져나가는 EXIT 모듈이다. |
|
|
| USER_COMMAND_0100 INPUT | MODULE | ZFIR0160I01 L53-63 | 0 | 화면 0100 PAI에서 CHAN(변경) 기능코드를 받아 SET_CHANGE 를 호출하는 단순 디스패치 모듈이다. |
|
|
| STATUS_0100 OUTPUT | MODULE | ZFIR0160O01 L10-29 | 0 | |
|
|
| SET_SCREEN_0100 OUTPUT | MODULE | ZFIR0160O01 L37-48 | 0 | |
|
|
| SET_GRID_0100 OUTPUT | MODULE | ZFIR0160O01 L56-75 | 0 | |
|