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

13 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 ZFIRCLV0010 SM34 뷰 클러스터 ZFIV0070 의 저장 전 처리를 담당하는 Exit 프로그램이다. 뷰 클러스터 유지보수(테이블 설정값 관리) 화면에서 저장 시점에 호출되어 권한을 확인하고 클러스터 데이터를 저장한다. 업무 로직이 아니라 SAP 뷰 유지보수 프레임워크의 확장 지점이다. abap://ZFIRCLV0010
설정
권한관리
마스터관리
FI
뷰클러스터
변경이력
생성자
변경자
감사필드
뷰유지보수
필드심볼
뷰저장
기능제외
저장위임
조회모드
변경모드
회사코드 권한체크
뷰 클러스터 저장 검증
저장 취소
권한 오류
by at
abap-indexing/z-ai/glm-5.2:free 2026-09-20T15:36:23+00:00
stable
VIEW_MAINTENANCE_LOW_LEVEL
ece135d2e0a134034e8d09d78ea4e7840a150c7109b4af653cf92c54aa7c7383 4 3 0

업무 목적

SM34 뷰 클러스터 ZFIV0070 의 저장 전 처리를 담당하는 Exit 프로그램이다. 뷰 클러스터 유지보수(테이블 설정값 관리) 화면에서 저장 시점에 호출되어 권한을 확인하고 클러스터 데이터를 저장한다. 업무 로직이 아니라 SAP 뷰 유지보수 프레임워크의 확장 지점이다.

주 흐름

  1. 뷰 클러스터 저장 직전에 호출된다 (REASSIGN_CLUSTER_SAVE / BEFORE_VIEW_SAVE_DATA)
  2. 저장 권한을 확인한다 (CHECK_AUTH)
  3. 클러스터 데이터를 저장한다 (SAVE_CLUSTER_ZFIV0070)

테이블 / 외부 호출

  • read: -
  • write: -
  • 외부 호출: VIEW_MAINTENANCE_LOW_LEVEL

로직 조각 (3건 / unit 2개)

LLM 이 코드에서 골라낸 업무 로직 단위다. 조각마다 소스 원문과 자연어 설명을 함께 싣는다 — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. 테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.

FORM SAVE_CLUSTER_ZFIV0070 — ZFIRCLV0010 L28-L152 (125줄)

뷰 클러스터 ZFIV0070 저장 직전에 생성/변경 이력 필드를 채우고 저장 함수를 호출한다.

이 unit 의 조각 2개가 68/125줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[aggregation] 뷰 유지보수 화면에서 변경된 행(ACTION 이 N 신규 또는 U 변경)만 골라, 신규 행에는 생성일시·생성자를, 모든 변경 행에는 변경일시·변경자를 채워 뷰 클러스터의 TOTAL·EXTRACT 버퍼에 되돌려 넣는다. 필드심볼 캐스팅으로 뷰 구조에 동적으로 접근한다.

    78|   LOOP AT <VCL_TOTAL> INTO LS_TOTAL.
    79|     LV_INDEX = SY-TABIX.
    80|     CHECK LS_TOTAL-ACTION IS NOT INITIAL. " U, N 등의 데이터만.
    81| 
    82|     MOVE LS_TOTAL TO LV_TOTAL. " View 구조만 복사 " VIEWKEY 접근용
    83|     READ TABLE <VCL_EXTRACT> INTO LV_EXTRACT
    84|          WITH KEY <VIEWKEY> BINARY SEARCH.
    85| 
    86|     IF SY-SUBRC = 0.
    87| 
    88|       ASSIGN : LV_EXTRACT TO <FS_RECORD> CASTING.
    89| 
    90|       " 신규 입력
    91|       IF LS_TOTAL-ACTION EQ 'N'.
    92|         <FS_RECORD>-CDATE = SY-DATUM.
    93|         <FS_RECORD>-CTIME = SY-UZEIT.
    94|         <FS_RECORD>-CNAME = SY-UNAME.
    95|       ENDIF.
    96| 
    97|       <FS_RECORD>-UDATE = SY-DATUM.
    98|       <FS_RECORD>-UTIME = SY-UZEIT.
    99|       <FS_RECORD>-UNAME = SY-UNAME.
   100| 
   101|       MODIFY <VCL_TOTAL>  FROM <FS_RECORD> INDEX LV_INDEX.
   102|       MODIFY <VCL_EXTRACT> FROM <FS_RECORD> INDEX LV_INDEX.
   103|       CLEAR : LV_EXTRACT.
   104|     ENDIF.
   105|   ENDLOOP.
  • EN: Stamps created-by/changed-by audit fields onto rows flagged as new or updated in the view-cluster buffers, using field-symbol casting for dynamic view access.
  • SAP 객체: ZFIV0070, VIMFLAGTAB, VCL_STRUC_TAB, VIMDESC
  • 업무 키워드: 뷰클러스터, 변경이력, 생성자, 변경자, 감사필드, 뷰유지보수, 필드심볼
  • English: view cluster, audit fields, created by, changed by, view maintenance, field symbol
  • 정의부(복사 시 함께 필요): T_RECORD, LS_TOTAL, LV_INDEX, LV_TOTAL, LV_EXTRACT, <VIEWKEY>, <FS_RECORD>
  • 선언을 못 찾은 이름: <VCL_TOTAL>, <VCL_EXTRACT> (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIRCLV0010/ZFIRCLV0010#L78-L105 · confidence 0.82 · ZFIRCLV0010#ZFIRCLV0010#FORM#SAVE_CLUSTER_ZFIV0070#C1

[fm_call] 뷰 동작(S 조회 / U 변경)에 따라 화면에서 제외할 기능코드(조회·변경·신규·저장·종료)를 정하고, 표준 FM VIEW_MAINTENANCE_LOW_LEVEL 에 SAVE 를 지시해 실제 저장을 맡긴다.

   107|   IF VCL_ACTION = 'S'.
   108|     FU_TO_EXCL-FUNCTION = 'ANZG'.
   109|     APPEND FU_TO_EXCL.
   110|     FU_TO_EXCL-FUNCTION = 'AEND'.
   111|     APPEND FU_TO_EXCL.
   112|     FU_TO_EXCL-FUNCTION = 'NEWL'.
   113|     APPEND FU_TO_EXCL.
   114|     FU_TO_EXCL-FUNCTION = 'SAVE'.
   115|     APPEND FU_TO_EXCL.
   116|     FU_TO_EXCL-FUNCTION = 'ENDE'.
   117|     APPEND FU_TO_EXCL.
   118|   ELSEIF VCL_ACTION = 'U'.
   119|     FU_TO_EXCL-FUNCTION = 'SAVE'.
   120|     APPEND FU_TO_EXCL.
   121|     FU_TO_EXCL-FUNCTION = 'ENDE'.
   122|     APPEND FU_TO_EXCL.
   123|   ELSE.
   124|     EXIT.
   125|   ENDIF.
   126| 
   127|   CALL FUNCTION 'VIEW_MAINTENANCE_LOW_LEVEL'
   128|     EXPORTING
   129|       FCODE                     = 'SAVE'
   130|       VIEW_ACTION               = VCL_ACTION
   131|       VIEW_NAME                 = LV_VIEWNAME
   132|     TABLES
   133|       CORR_KEYTAB               = L_T_E071K
   134|       DBA_SELLIST               = <VCL_DBA_SELLIST>
   135|       DPL_SELLIST               = <VCL_DPL_SELLIST>
   136|       EXCL_CUA_FUNCT            = FU_TO_EXCL
   137|       EXTRACT                   = <VCL_EXTRACT>
   138|       TOTAL                     = <VCL_TOTAL>
   139|       X_HEADER                  = <VCL_HEADER>
   140|       X_NAMTAB                  = <VCL_NAMTAB>
   141|     EXCEPTIONS
   142|       FUNCTION_NOT_FOUND        = 1
   143|       MISSING_CORR_NUMBER       = 2
   144|       NO_VALUE_FOR_SUBSET_IDENT = 3
   145|       SAVING_CORRECTION_FAILED  = 4
   146|       OTHERS                    = 5.
  • EN: Builds the excluded-function list per view action and delegates the actual save to the standard FM VIEW_MAINTENANCE_LOW_LEVEL.
  • 호출(파서): VIEW_MAINTENANCE_LOW_LEVEL
  • SAP 객체: VIEW_MAINTENANCE_LOW_LEVEL, ZFIV0070, VIMEXCLFUN, E071K
  • 업무 키워드: 뷰저장, 기능제외, 뷰유지보수, 저장위임, 조회모드, 변경모드
  • English: view save, excluded functions, view maintenance, SAVE fcode, display mode, change mode
  • 정의부(복사 시 함께 필요): FU_TO_EXCL, LV_VIEWNAME, L_T_E071K
  • 선언을 못 찾은 이름: <VCL_DBA_SELLIST>, <VCL_DPL_SELLIST>, <VCL_EXTRACT>, <VCL_TOTAL>, <VCL_HEADER>, <VCL_NAMTAB> (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIRCLV0010/ZFIRCLV0010#L107-L146 · confidence 0.84 · ZFIRCLV0010#ZFIRCLV0010#FORM#SAVE_CLUSTER_ZFIV0070#C2

FORM CHECK_AUTH — ZFIRCLV0010 L159-L185 (27줄)

뷰 클러스터 ZFIV0070/ZFIV0080 저장 시 편집 중인 각 행의 회사코드에 대해 F_BKPF_BUK 권한을 검사하고 권한이 없으면 저장 기능을 취소하고 현재 뷰에 머무르게 하는 FORM이다.

이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[validation] 대상 뷰 클러스터가 ZFIV0070/ZFIV0080이면 VCL_SET_TABLE_ACCESS_FOR_OBJ로 상위 객체 테이블 접근을 설정한 뒤 <VCL_TOTAL>의 각 행(ZFIT0081 구조)의 회사코드에 AUTHORITY-CHECK F_BKPF_BUK를 수행하고, 실패 시 FZ 240 메시지를 내고 VCL_NEXT_VIEW/VCL_AKT_VIEW를 이전 뷰로 되돌리며 VCL_FUNCTION을 지워 저장을 막는다.

   165|   IF VCL_STRUC_TAB-OBJECT EQ 'ZFIV0070' OR
   166|      VCL_STRUC_TAB-OBJECT EQ 'ZFIV0080'.
   167| 
   168|     PERFORM VCL_SET_TABLE_ACCESS_FOR_OBJ USING VCL_STRUC_TAB-PREDOBJECT
   169|                                          CHANGING LV_ERROR_FLAG.
   170| 
   171|     CHECK LV_ERROR_FLAG EQ SPACE.
   172|     LOOP AT <VCL_TOTAL> INTO LS_ZFIV0081.
   173| *     회사코드 권한체크
   174|       AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
   175|                 ID 'BUKRS' FIELD LS_ZFIV0081-BUKRS.
   176|       IF SY-SUBRC NE 0.
   177|         MESSAGE S240(FZ) WITH LS_ZFIV0081-BUKRS.
   178|         VCL_NEXT_VIEW = VCL_LAST_VIEW.
   179|         VCL_AKT_VIEW  = VCL_LAST_VIEW.
   180|         CLEAR VCL_FUNCTION.
   181|       ENDIF.
   182|     ENDLOOP.
   183|   ENDIF.
  • EN: For view clusters ZFIV0070/ZFIV0080, checks authorization object F_BKPF_BUK for the company code of every edited row in the view-cluster total table and cancels the save (resets current view and clears VCL_FUNCTION) when the check fails.
  • 호출(파서): VCL_SET_TABLE_ACCESS_FOR_OBJ
  • SAP 객체: F_BKPF_BUK, ZFIV0070, ZFIV0080, ZFIT0081, VCL_SET_TABLE_ACCESS_FOR_OBJ
  • 업무 키워드: 회사코드 권한체크, 뷰 클러스터 저장 검증, 저장 취소, 권한 오류
  • English: Authorization Check, F_BKPF_BUK, View Cluster, SM34, Company Code
  • 정의부(복사 시 함께 필요): LV_ERROR_FLAG, LS_ZFIV0081
  • 선언을 못 찾은 이름: <VCL_TOTAL> (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIRCLV0010/ZFIRCLV0010#L165-L183 · confidence 0.9 · ZFIRCLV0010#ZFIRCLV0010#FORM#CHECK_AUTH#C1

정의부 (12건)

로직 조각을 다른 프로그램으로 옮겨 붙일 때 함께 가야 하는 선언이다. 조각별로 무엇이 필요한지는 위 조각 항목의 정의부 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 GET /chunks/<chunk_id>declaration_code 로 받는다.

ZFIRCLV0010 (12건)

T_RECORD — types · unit 로컬 · L30-L34

  TYPES : BEGIN OF T_RECORD.
          INCLUDE STRUCTURE ZFIV0070.
  TYPES : ACTION LIKE VIMFLAGTAB-ACTION.
  TYPES : MARK LIKE VIMFLAGTAB-ACTION,
END OF T_RECORD.

LV_INDEX — data · unit 로컬 · L36-L36

  DATA : LV_INDEX LIKE SY-TABIX.

LV_VIEWNAME — data · unit 로컬 · L37-L37

  DATA: LV_VIEWNAME TYPE VCLSTRUC-OBJECT.

LV_TOTAL — data · unit 로컬 · L40-L40

  DATA : LV_TOTAL(1000) TYPE C.

LV_EXTRACT — data · unit 로컬 · L41-L41

  DATA : LV_EXTRACT(1000) TYPE C.

LS_TOTAL — data · unit 로컬 · L43-L43

  DATA : LS_TOTAL TYPE T_RECORD.

— field-symbol · unit 로컬 · L48-L48

  FIELD-SYMBOLS : <VIEWKEY>  TYPE X.

<FS_RECORD> — field-symbol · unit 로컬 · L50-L50

  FIELD-SYMBOLS : <FS_RECORD> TYPE T_RECORD.

L_T_E071K — data · unit 로컬 · L52-L52

  DATA: L_T_E071K LIKE E071K OCCURS 0.

FU_TO_EXCL — data · unit 로컬 · L53-L55

  DATA: BEGIN OF FU_TO_EXCL OCCURS 10.
          INCLUDE STRUCTURE VIMEXCLFUN.
  DATA: END OF FU_TO_EXCL.

LS_ZFIV0081 — data · unit 로컬 · L161-L161

  DATA: LS_ZFIV0081 LIKE ZFIT0081.

LV_ERROR_FLAG — data · unit 로컬 · L163-L163

  DATA: LV_ERROR_FLAG TYPE VCL_FLAG_TYPE.

Unit 목록 (컨테이너)

unit 유형 위치 조각 한 줄 요약
REASSIGN_CLUSTER_SAVE FORM ZFIRCLV0010 L18-20 0 뷰 클러스터 저장 직전(BEFORE_VIEW_SAVE_DATA) 이벤트에서 SAVE_CLUSTER_ZFIV0070을 호출해 클러스터 데이터를 저장하는 위임 FORM이다.
SAVE_CLUSTER_ZFIV0070 FORM ZFIRCLV0010 L28-152 2 뷰 클러스터 ZFIV0070 저장 직전에 생성/변경 이력 필드를 채우고 저장 함수를 호출한다.
CHECK_AUTH FORM ZFIRCLV0010 L159-185 1 뷰 클러스터 ZFIV0070/ZFIV0080 저장 시 편집 중인 각 행의 회사코드에 대해 F_BKPF_BUK 권한을 검사하고 권한이 없으면 저장 기능을 취소하고 현재 뷰에 머무르게 하는 FORM이다.