Files

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
권한관리
마스터관리
설정
FI
권한저장
권한테이블
사용자ID
일괄저장
롤백
저장건수
저장 확인
변경 여부
권한 테이블 저장
화면 종료
오류 체크
프로그램 종료
기능코드
변경 모드
조회 모드
입력 가능 전환
by at
abap-indexing/z-ai/glm-5.2:free 2026-09-20T15:36:23+00:00
stable
USER_ADDRP
ZFIT0160
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
dcd5669a8a7534a78705c2d3ceaaff129923cbd2cd1a348ab5c57d65b27ca11c 62 26 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 에 읽는다(결과 반영은 주석 처리).

    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