Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
78 KiB
type, title, description, resource, tags, generated, status, x-package, x-changed-on, x-tables-read, x-tables-write, x-calls, x-code-hash, x-unit-count, x-chunk-count, x-declaration-count
| type | title | description | resource | tags | generated | status | x-package | x-changed-on | x-tables-read | x-tables-write | x-calls | x-code-hash | x-unit-count | x-chunk-count | x-declaration-count | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| abap-program | ZFIR0160 — [FI] 권한관리 | FI 커스텀 프로그램들이 공통으로 참조하는 권한 테이블 ZFIT0160 을 유지보수하는 관리 화면이다. 사용자별로 접근 가능한 회사코드·사업장 등을 편집 가능한 ALV 그리드에서 등록·수정·복사·삭제하고 저장한다. ZFIT0160 은 이 27본 중 18본이 읽는 테이블로, AUTHORITY_BUKRS(공용 인클루드)가 회사코드 권한을 판정할 때 참조한다. | abap://ZFIR0160 |
|
|
stable |
|
|
|
dcd5669a8a7534a78705c2d3ceaaff129923cbd2cd1a348ab5c57d65b27ca11c | 62 | 26 | 75 |
업무 목적
FI 커스텀 프로그램들이 공통으로 참조하는 권한 테이블 ZFIT0160 을 유지보수하는 관리 화면이다. 사용자별로 접근 가능한 회사코드·사업장 등을 편집 가능한 ALV 그리드에서 등록·수정·복사·삭제하고 저장한다. ZFIT0160 은 이 27본 중 18본이 읽는 테이블로, AUTHORITY_BUKRS(공용 인클루드)가 회사코드 권한을 판정할 때 참조한다.
주 흐름
- 초기 변형을 불러오고 선택화면을 준비한다 (SET_INIT → GET_INIT_VARIANT → GET_VARIANT)
- ZFIT0160 권한 내역과 사용자 정보(USER_ADDRP)를 읽어 그리드 데이터를 만든다 (SET_DATA)
- 셀 입력 가능 여부와 행 스타일을 설정한다 (SET_ITAB_STYLE → SET_LINE_CELLTAB)
- 편집 가능한 ALV 를 화면 0100 에 띄운다 (SET_FIELD01 → RUN_DISPLAY_ALV)
- 행 추가·복사·삭제와 셀 변경을 처리하고 사용자 ID 에 F4 를 제공한다 (SET_COPY_ROWS / SET_DELETE_ROWS / DATA_CHANGED / F4_UNAME_PROCESS)
- 유효성(기간 중복 등)을 검증한다 (CHK_ZINOUT → CHK_DATA)
- 확인 팝업 후 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 에 읽는다(결과 반영은 주석 처리).
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,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 로 사용자 성명을 채운다.
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,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 에 적재한다.
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 / write -
- SAP 객체: ZFIT0160
- 업무 키워드: 권한 테이블, 사용자 권한 조회, 전체 조회
- English: authorization table, SELECT
- 정의부(복사 시 함께 필요):
GT_MAIN,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 한다.
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
- 호출(파서): USER_ADDRP_PROCESS
- SAP 객체: USER_ADDRP, ZTR_POOL
- 업무 키워드: 사용자 성명, 사용자 마스터, 이름 보완, 권한 목록
- English: user name, USER_ADDRP, enrichment
- 정의부(복사 시 함께 필요):
GT_MAIN,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 로 셀 값을 확정한다.
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
- 호출(파서): 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,GV_ERR,GS_MSG,GT_MAIN,<FS_FIELD>,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' 와 '입출구분자 오류입니다' 메시지를 설정한다.
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 오류 프로토콜에 표시한다.
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 로 옮기고, 없으면 '해당 자료가 없습니다' 메시지로 종료한다.
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 / write -
- SAP 객체: USER_ADDRP
- 업무 키워드: 사용자 목록, F4 도움말, 사용자 마스터 조회
- English: value help, USER_ADDRP, user master
- 정의부(복사 시 함께 필요):
IT_USER,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 을 호출해 사용자 선택 팝업을 띄워 선택 인덱스와 값을 받는다.
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,SELECTFIELD,LD_TABIX,SELECT_VALUE,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 한 뒤 그리드를 갱신한다.
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
- 호출(파서): USER_ADDRP_PROCESS, SET_REFRESH
- SAP 객체: ZTR_POOL, USER_ADDRP
- 업무 키워드: 선택값 반영, 사용자 성명, 그리드 갱신
- English: selected value, user name, ALV refresh
- 정의부(복사 시 함께 필요):
LD_TABIX,IT_VALUE,GT_MAIN,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)→그리드 갱신 순으로 분기한다.
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,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 한다.
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
- 호출(파서): SET_LINE_CELLTAB
- 업무 키워드: 행 스타일, 신규 행, 셀 편집 상태
- English: cell style, editable ALV
- 정의부(복사 시 함께 필요):
LV_TABIX,GT_MAIN,LS_MAIN,LT_CELLTAB,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 로 셀 스타일을 설정한다.
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,GS_FCAT,LS_CELLTAB,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 로 받는다.
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,L_DEFAULTOPTION,L_TEXTLINE1,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 에 모으고, 선택이 없으면 '삭제할 행을 선택하세요' 메시지로 종료한다.
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,LT_ROWS,LS_ROWS,GT_MAIN,ZFIT0160,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 에서 삭제한 뒤 삭제 건수를 메시지로 표시한다.
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, ZFIT0160
- SAP 객체: ZFIT0160
- 업무 키워드: 권한 삭제, 사용자 권한, DB 삭제, 삭제 건수
- English: authorization delete, DELETE FROM, user authorization
- 정의부(복사 시 함께 필요):
ZFIT0160,GT_TABLE,GT_MAIN,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 행 스타일을 준다.
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,LT_ROWS,GT_MAIN,GT_IMSI1,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 로 되돌린다.
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
- SAP 객체: ZFIT0160, USERID
- 업무 키워드: 권한저장, 권한테이블, 사용자ID, 일괄저장, 롤백, 저장건수, 권한관리
- English: authorization save, authority table, user ID, bulk update, rollback, ZFIT0160
- 정의부(복사 시 함께 필요):
GV_ERR,ZFIT0160,GT_TABLE,GV_CHK,LV_TEXT,LV_CNT1,LV_CNT2,GT_MAIN,LV_TABIX,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 한다.
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
- 호출(파서): SET_CELLTAB
- 업무 키워드: 행 스타일, 셀 편집 상태, 그리드 갱신
- English: cell style, ALV editable grid
- 정의부(복사 시 함께 필요):
GT_MAIN,LV_TABIX,LS_MAIN,LT_CELLTAB,LV_UCOMM,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 에 넣는다.
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,GS_FCAT,LS_CELLTAB,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 로 받는다(선택화면 반영 코드는 주석 처리됨).
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,GV_EXIT,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 로 반환하며 오류 시 시스템 메시지를 출력한다.
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 - 위치:
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 를 표시한다.
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,<FS_GRID>,GT_MAIN,<FS_TABLE>,GS_LAYOUT,GS_VARIANT,GT_EXCLUDE,<GT_FIELD>,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 으로 토글한다.
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,GO_GRID,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)가 있으면 화면 종료를 중단한다.
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,GV_ANSWER,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)이면 프로그램을 종료한다.
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 - 위치:
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
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
DATA: GO_CUSTOM TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
GO_CUSTOM2 — data · L115-L115
DATA:
GO_CUSTOM2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
GO_DOCKING — data · L117-L117
DATA: GO_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER.
GO_DOCKING2 — data · L118-L118
DATA:
GO_DOCKING2 TYPE REF TO CL_GUI_DOCKING_CONTAINER.
GO_SPLITTER — data · L120-L120
DATA: GO_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER.
GO_SPLITTER2 — data · L121-L121
DATA:
GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER.
GO_GRID — data · L128-L128
DATA: GO_GRID TYPE REF TO CL_GUI_ALV_GRID.
GO_GRID2 — data · L129-L129
DATA:
GO_GRID2 TYPE REF TO CL_GUI_ALV_GRID.
GO_GRID3 — data · L130-L130
DATA:
GO_GRID3 TYPE REF TO CL_GUI_ALV_GRID.
GO_GRID4 — data · L131-L131
DATA:
GO_GRID4 TYPE REF TO CL_GUI_ALV_GRID.
GO_GRID5 — data · L132-L132
DATA:
GO_GRID5 TYPE REF TO CL_GUI_ALV_GRID.
GO_CON — data · L134-L134
DATA: GO_CON TYPE REF TO CL_GUI_CONTAINER.
GO_CON2 — data · L135-L135
DATA:
GO_CON2 TYPE REF TO CL_GUI_CONTAINER.
GO_CON3 — data · L136-L136
DATA:
GO_CON3 TYPE REF TO CL_GUI_CONTAINER.
GO_CON4 — data · L137-L137
DATA:
GO_CON4 TYPE REF TO CL_GUI_CONTAINER.
GO_CON5 — data · L138-L138
DATA:
GO_CON5 TYPE REF TO CL_GUI_CONTAINER.
GO_EVENT — data · L140-L140
DATA: GO_EVENT TYPE REF TO LCL_EVENT_RECEIVER.
ZFIR0160T01 (36건)
GS_LAYOUT — data · L7-L7
DATA: GS_LAYOUT TYPE LVC_S_LAYO.
GS_VARIANT — data · L8-L8
DATA:
GS_VARIANT TYPE DISVARIANT.
GX_VARIANT — data · L9-L9
DATA:
GX_VARIANT TYPE DISVARIANT.
GT_EXCLUDE — data · L10-L10
DATA:
GT_EXCLUDE TYPE UI_FUNCTIONS.
GS_FCAT — data · L11-L11
DATA:
GS_FCAT TYPE LVC_S_FCAT.
GT_FCAT1 — data · L12-L12
DATA:
GT_FCAT1 TYPE LVC_T_FCAT.
GS_SORT — data · L13-L13
DATA:
GS_SORT TYPE LVC_S_SORT.
GT_SORT — data · L14-L14
DATA:
GT_SORT TYPE LVC_T_SORT.
GS_GLAY — data · L15-L15
DATA:
GS_GLAY TYPE LVC_S_GLAY.
GT_HEAD — data · L16-L16
DATA:
GT_HEAD TYPE LVC_T_HEAD.
GS_HEAD — data · L17-L17
DATA:
GS_HEAD TYPE LVC_S_HEAD.
GS_EVENT — data · L18-L18
DATA:
GS_EVENT TYPE LVC_S_EVTS.
GT_EVENT — data · L19-L19
DATA:
GT_EVENT TYPE LVC_T_EVTS.
GS_STBL — data · L20-L20
DATA:
GS_STBL TYPE LVC_S_STBL. " Refresh stability.
G_REPID — data · L22-L22
DATA: G_REPID TYPE SY-REPID.
G_TABNAME — data · L23-L23
DATA:
G_TABNAME TYPE SLIS_TABNAME.
GV_EXIT — data · L24-L24
DATA:
GV_EXIT TYPE C.
GS_F4 — data · L26-L26
DATA: GS_F4 TYPE LVC_S_F4. " F4 ## ##
GT_F4 — data · L27-L27
DATA:
GT_F4 TYPE LVC_T_F4.
OK_CODE — data · L35-L35
DATA: OK_CODE TYPE SY-UCOMM.
SAVE_OK — data · L36-L36
DATA:
SAVE_OK TYPE SY-UCOMM.
GV_UCOMM — data · L38-L38
DATA: GV_UCOMM TYPE SY-UCOMM. " COMMAND
GS_MSG — data · L39-L39
DATA:
GS_MSG LIKE FIMSG. " MESSSAGE
GV_ERR — data · L40-L40
DATA:
GV_ERR TYPE C. " ERROR
GV_ANSWER — data · L41-L41
DATA:
GV_ANSWER TYPE C. " MESSAGE
GV_CHK — data · L42-L42
DATA:
GV_CHK TYPE C. " CHANGE
GV_LOCK — data · L43-L43
DATA:
GV_LOCK TYPE C.
GV_MNAME — data · L44-L44
DATA:
GV_MNAME TYPE STRING.
GC_YEL — constants · L51-L51
CONSTANTS: GC_YEL(4) VALUE '@09@'. " ICON_LED_YELLOW
GC_GRE — constants · L52-L52
CONSTANTS:
GC_GRE(4) VALUE '@08@'. " ICON_LED_GREEN
GC_OUT — constants · L53-L53
CONSTANTS:
GC_OUT(4) VALUE '@EB@'. " ICON_LED_LIGHT_OUT
GC_RED — constants · L54-L54
CONSTANTS:
GC_RED(4) VALUE '@0A@'. " ICON_LED_RED
<GS_FIELD> — field-symbol · L61-L61
FIELD-SYMBOLS: <GS_FIELD> TYPE LVC_S_FCAT.
<GT_FIELD> — field-symbol · L62-L62
FIELD-SYMBOLS:
<GT_FIELD> TYPE LVC_T_FCAT.
<FS_GRID> — field-symbol · L64-L64
FIELD-SYMBOLS: <FS_GRID> TYPE REF TO CL_GUI_ALV_GRID.
<FS_TABLE> — field-symbol · L65-L65
FIELD-SYMBOLS:
<FS_TABLE> TYPE TABLE.
ZFIR0160TOP (21건)
BKPF — tables · L5-L5
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
BSAK — tables · L5-L5
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
BSEG — tables · L5-L5
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
BSIK — tables · L5-L5
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
BSIS — tables · L5-L5
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
T012K — tables · L5-L5
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
ZFIT0160 — tables · L5-L5
TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG.
ICON — type-pool · L7-L7
TYPE-POOLS: SLIS, ICON.
SLIS — type-pool · L7-L7
TYPE-POOLS: SLIS, ICON.
IT_T012K — data · L10-L12
DATA: BEGIN OF IT_T012K OCCURS 0.
INCLUDE STRUCTURE T012K.
DATA END OF IT_T012K.
IT_ZFIT0160 — data · L14-L16
DATA: BEGIN OF IT_ZFIT0160 OCCURS 0.
INCLUDE STRUCTURE ZFIT0160.
DATA END OF IT_ZFIT0160.
GT_MAIN — data · L19-L28
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
DATA: GT_IMSI LIKE TABLE OF GT_MAIN WITH HEADER LINE.
GT_IMSI1 — data · L32-L32
DATA: GT_IMSI1 LIKE TABLE OF GT_MAIN WITH HEADER LINE.
P_ANSWER — data · L35-L35
DATA: P_ANSWER.
TMP_MAIN — data · L37-L37
DATA: TMP_MAIN LIKE TABLE OF GT_MAIN WITH HEADER LINE.
GT_TABLE — data · L39-L39
DATA: GT_TABLE LIKE TABLE OF ZFIT0160 WITH HEADER LINE.
GT_ANY — data · L41-L41
DATA GT_ANY TYPE REF TO DATA.
I_TABNAM — data · L42-L42
DATA I_TABNAM TYPE TABNAME16.
<FS_S> — field-symbol · L44-L44
FIELD-SYMBOLS: <FS_S> TYPE ANY.
<FS_T> — field-symbol · L45-L45
FIELD-SYMBOLS:
<FS_T> TYPE ANY TABLE.
ZFIR0160F01 (4건)
L_TABIX — data · unit 로컬 · L177-L177
DATA: L_TABIX LIKE SY-TABIX.
L_DEFAULTOPTION — data · unit 로컬 · L205-L205
DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70).
L_TEXTLINE1 — data · unit 로컬 · L205-L205
DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70).
L_TEXTLINE2 — data · unit 로컬 · L205-L205
DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70).
ZFIR0160F02 (30건)
LS_MAIN — data · unit 로컬 · L15-L15
DATA: LS_MAIN LIKE GT_MAIN.
LT_CELLTAB — data · unit 로컬 · L17-L17
DATA: LT_CELLTAB TYPE LVC_T_STYL.
LV_TABIX — data · unit 로컬 · L18-L18
DATA:
LV_TABIX TYPE SY-TABIX.
LV_UCOMM — data · unit 로컬 · L20-L20
DATA: LV_UCOMM TYPE SY-UCOMM.
LS_MAIN — data · unit 로컬 · L56-L56
DATA: LS_MAIN LIKE GT_MAIN.
LT_CELLTAB — data · unit 로컬 · L58-L58
DATA: LT_CELLTAB TYPE LVC_T_STYL.
LV_TABIX — data · unit 로컬 · L59-L59
DATA:
LV_TABIX TYPE SY-TABIX.
LV_UCOMM — data · unit 로컬 · L61-L61
DATA: LV_UCOMM TYPE SY-UCOMM.
LS_CELLTAB — data · unit 로컬 · L98-L98
DATA: LS_CELLTAB TYPE LVC_S_STYL.
LV_MODE — data · unit 로컬 · L99-L99
DATA:
LV_MODE TYPE RAW4.
LS_CELLTAB — data · unit 로컬 · L140-L140
DATA: LS_CELLTAB TYPE LVC_S_STYL.
LV_MODE — data · unit 로컬 · L141-L141
DATA:
LV_MODE TYPE RAW4.
LT_ROWS — data · unit 로컬 · L836-L836
DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행
LS_ROWS — data · unit 로컬 · L837-L837
DATA:
LS_ROWS TYPE LVC_S_ROW.
LV_CNT — data · unit 로컬 · L839-L839
DATA: LV_CNT TYPE STRING.
LT_ROWS — data · unit 로컬 · L896-L896
DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행
LS_ROWS — data · unit 로컬 · L897-L897
DATA:
LS_ROWS TYPE LVC_S_ROW.
LS_MOD_CELLS — data · unit 로컬 · L942-L942
DATA: LS_MOD_CELLS TYPE LVC_S_MODI.
<FS_FIELD> — field-symbol · unit 로컬 · L946-L946
FIELD-SYMBOLS: <FS_FIELD> TYPE ANY.
LV_TABIX — data · unit 로컬 · L1157-L1157
DATA: LV_TABIX TYPE SY-TABIX.
LT_SCOL — data · unit 로컬 · L1158-L1158
DATA:
LT_SCOL TYPE LVC_T_SCOL.
LV_TEXT — data · unit 로컬 · L1160-L1160
DATA: LV_TEXT TYPE STRING.
LV_CNT1 — data · unit 로컬 · L1161-L1161
DATA:
LV_CNT1 TYPE STRING. " 성공
LV_CNT2 — data · unit 로컬 · L1162-L1162
DATA:
LV_CNT2 TYPE STRING. " 실패
SELECTFIELD — data · unit 로컬 · L1327-L1327
DATA : SELECTFIELD LIKE HELP_INFO-FIELDNAME.
IT_FIELDS — data · unit 로컬 · L1328-L1328
DATA:
IT_FIELDS LIKE HELP_VALUE OCCURS 1 WITH HEADER LINE.
SELECT_VALUE — data · unit 로컬 · L1329-L1329
DATA:
SELECT_VALUE LIKE HELP_INFO-FLDVALUE.
LD_TABIX — data · unit 로컬 · L1330-L1330
DATA:
LD_TABIX LIKE SY-TABIX.
IT_USER — data · unit 로컬 · L1336-L1339
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
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 |