Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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 | ZRGGBR000 | SAP 표준 검증 Exit 폼풀 RGGBR000 을 회사용으로 복사한 프로그램이다. GGB0(검증) 에서 정의한 검증 규칙이 호출하는 사용자 Exit(U100, US001, UM001, U200)을 담으며, 전표 전기 시 예산 체크(Z_CO_CHECK_BUDGET) 같은 회사 고유 검증 로직을 수행한다. GET_EXIT_TITLES 에 Exit 목록을 등록해야 GGB0 에서 선택할 수 있다. | abap://ZRGGBR000 |
|
|
stable |
|
|
4e5035dfc2db296a35ee8167070a42538171448b19d9660acc745b40eb5bdd3d | 7 | 4 | 0 |
업무 목적
SAP 표준 검증 Exit 폼풀 RGGBR000 을 회사용으로 복사한 프로그램이다. GGB0(검증) 에서 정의한 검증 규칙이 호출하는 사용자 Exit(U100, US001, UM001, U200)을 담으며, 전표 전기 시 예산 체크(Z_CO_CHECK_BUDGET) 같은 회사 고유 검증 로직을 수행한다. GET_EXIT_TITLES 에 Exit 목록을 등록해야 GGB0 에서 선택할 수 있다.
주 흐름
- GGB0 에서 검증 규칙이 Exit 를 선택할 수 있도록 Exit 목록을 등록한다 (GET_EXIT_TITLES)
- 전표 전기 시 해당 검증 규칙이 등록된 Exit 를 호출한다
- U200 에서 예산 체크 등 회사 고유 검증을 수행한다 (Z_CO_CHECK_BUDGET)
테이블 / 외부 호출
- read: T001
- write: -
- 외부 호출: Z_CO_CHECK_BUDGET
로직 조각 (4건 / unit 2개)
LLM 이 코드에서 골라낸 업무 로직 단위다. 조각마다 소스 원문과 자연어 설명을 함께 싣는다 — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. 테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.
FORM GET_EXIT_TITLES — ZRGGBR000 L47-L103 (57줄)
GGB0 검증 규칙에서 선택할 수 있는 사용자 Exit 목록(U100, US001, UM001, U200 예산통제)을 ETAB 에 등록하는 FORM 이다.
이 unit 의 조각 2개가 26/57줄(46%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[other] 검증 Exit U100(전기일자 체크), US001·UM001(EIS 예제), U200(코스트센터/오더 예산 통제 유효성 체크)을 이름·파라미터 유형·제목과 함께 EXITS 목록에 등록해 GGB0 검증 규칙에서 선택 가능하게 한다.
62| EXITS-NAME = 'U100'.
63| EXITS-PARAM = C_EXIT_PARAM_NONE. "Complete data used in exit.
64| EXITS-TITLE = TEXT-101. "Posting date check
65| APPEND EXITS.
66|
67| * forms for SAP_EIS
68| EXITS-NAME = 'US001'. "single validation: only one
69| EXITS-PARAM = C_EXIT_PARAM_NONE. "data record used
70| EXITS-TITLE = TEXT-102. "Example EIS
71| APPEND EXITS.
72|
73| EXITS-NAME = 'UM001'. "matrix validation:
74| EXITS-PARAM = C_EXIT_PARAM_CLASS. "complete data used in exit.
75| EXITS-TITLE = TEXT-103. "Example EIS
76| APPEND EXITS.
77|
78| " 예산 통제(코스트센터 / 오더 )
79| EXITS-NAME = 'U200'. "유효성 체크
80| EXITS-PARAM = C_EXIT_PARAM_CLASS.
81| EXITS-TITLE = TEXT-200.
82| APPEND EXITS.
- EN: Registers the validation user exits U100, US001, UM001 and U200 (budget control for cost center/order) with their parameter type and title so they can be chosen in GGB0 validation rules.
- SAP 객체: GGB0, RGGBR000, U200
- 업무 키워드: 검증 Exit 등록, 예산 통제, GGB0 검증, 유효성 체크
- English: Validation Exit, Budget Check, GGB0
- 정의부(복사 시 함께 필요):
EXITS - 선언을 못 찾은 이름: C_EXIT_PARAM_NONE, C_EXIT_PARAM_CLASS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치:
abap://ZRGGBR000/ZRGGBR000#L62-L82· confidence 0.9 ·ZRGGBR000#ZRGGBR000#FORM#GET_EXIT_TITLES#C1
[other] 등록한 EXITS 목록을 출력 파라미터 ETAB 로 복사해 검증 프레임워크에 돌려준다.
97| REFRESH ETAB.
98| LOOP AT EXITS.
99| ETAB = EXITS.
100| APPEND ETAB.
101| ENDLOOP.
- EN: Copies the registered exit list into the ETAB table parameter returned to the validation framework.
- SAP 객체: RGGBR000
- 업무 키워드: Exit 목록 반환
- English: Exit Titles
- 정의부(복사 시 함께 필요):
EXITS - 위치:
abap://ZRGGBR000/ZRGGBR000#L97-L101· confidence 0.85 ·ZRGGBR000#ZRGGBR000#FORM#GET_EXIT_TITLES#C2
FORM U200 — ZRGGBR000 L256-L358 (103줄)
전표 전기 시 코스트센터·오더별 예산을 초과하는지 검증해 초과하면 전기를 막는다 (GGB0 검증 Exit).
이 unit 의 조각 2개가 74/103줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[aggregation] 전표 헤더에서 회사코드·전기일을 꺼내고 회사코드 통화를 조회한 뒤, 전표 아이템을 두 번 돌며 코스트센터-원가요소별과 오더별로 금액을 COLLECT 로 합산한다. 대변(SHKZG='H') 금액은 부호를 반전해 순증감으로 만든다.
284| LV_BUKRS = BOOL_DATA-BKPF-BUKRS.
285| LV_BUDAT = BOOL_DATA-BKPF-BUDAT.
286| SELECT SINGLE WAERS " 회사코드 통화 조회
287| INTO LV_WAERS
288| FROM T001
289| WHERE BUKRS = LV_BUKRS.
290|
291| " 코스트센터-원가요소별 기표 내역 Collect.
292| LOOP AT BOOL_DATA-BSEG INTO LS_BSEG
293| WHERE KOSTL IS NOT INITIAL.
294| LT_KOSTL_CHECK-KOSTL = LS_BSEG-KOSTL.
295| LT_KOSTL_CHECK-KSTAR = LS_BSEG-HKONT.
296| IF LS_BSEG-SHKZG = 'H'.
297| LT_KOSTL_CHECK-DMBTR = LS_BSEG-DMBTR * -1.
298| ELSE.
299| LT_KOSTL_CHECK-DMBTR = LS_BSEG-DMBTR.
300| ENDIF.
301| COLLECT LT_KOSTL_CHECK.
302| CLEAR : LS_BSEG, LT_KOSTL_CHECK.
303| ENDLOOP.
304|
305| " 오더별 기표 내역 Collect
306| LOOP AT BOOL_DATA-BSEG INTO LS_BSEG
307| WHERE AUFNR IS NOT INITIAL.
308| LT_AUNFR_CHECK-AUFNR = LS_BSEG-AUFNR.
309| IF LS_BSEG-SHKZG = 'H'.
310| LT_AUNFR_CHECK-DMBTR = LS_BSEG-DMBTR * -1.
311| ELSE.
312| LT_AUNFR_CHECK-DMBTR = LS_BSEG-DMBTR.
313| ENDIF.
314| COLLECT LT_AUNFR_CHECK.
315| CLEAR : LS_BSEG, LT_AUNFR_CHECK.
316| ENDLOOP.
317|
- EN: Extracts header company code/posting date and currency, then aggregates posted amounts per cost center + cost element and per order, negating credit lines to get net movement.
- 테이블(파서): read T001 / write -
- SAP 객체: BKPF, BSEG, T001, CSKS, CSKA, AUFK, KOSTL, KSTAR, AUFNR, SHKZG
- 업무 키워드: 예산통제, 코스트센터, 원가요소, 오더, 금액합산, 차대구분, 순증감, 전표아이템
- English: budget control, cost center, cost element, internal order, amount aggregation, debit credit, net amount
- 정의부(복사 시 함께 필요):
LV_BUKRS,LV_BUDAT,LV_WAERS,LS_BSEG,LT_KOSTL_CHECK,LT_AUNFR_CHECK - 위치:
abap://ZRGGBR000/ZRGGBR000#L284-L317· confidence 0.88 ·ZRGGBR000#ZRGGBR000#FORM#U200#C1
[validation] 합산한 코스트센터-원가요소 건과 오더 건마다 커스텀 FM Z_CO_CHECK_BUDGET 으로 예산 잔액을 확인하고, 결과코드가 E(초과)면 검증 결과를 거짓으로 돌려 오류 메시지를 띄우고 전표 전기를 차단한다.
319| LOOP AT LT_KOSTL_CHECK.
320| CALL FUNCTION 'Z_CO_CHECK_BUDGET'
321| EXPORTING
322| I_BUKRS = LV_BUKRS
323| I_BUDAT = LV_BUDAT
324| I_KSTAR = LT_KOSTL_CHECK-KSTAR
325| I_KOSTL = LT_KOSTL_CHECK-KOSTL
326| I_DMBTR = LT_KOSTL_CHECK-DMBTR
327| I_WAERS = LV_WAERS
328| IMPORTING
329| E_RESULTCODE = LV_CODE
330| E_RESULTMSG = LV_MSG.
331|
332| IF LV_CODE = 'E'.
333| B_RESULT = B_FALSE.
334| MESSAGE E000(ZFIM2) WITH LV_MSG.
335| EXIT.
336| ENDIF.
337| ENDLOOP.
338|
339| " 오더 체크
340| LOOP AT LT_AUNFR_CHECK.
341| CALL FUNCTION 'Z_CO_CHECK_BUDGET'
342| EXPORTING
343| I_BUKRS = LV_BUKRS
344| I_BUDAT = LV_BUDAT
345| I_AUFNR = LT_AUNFR_CHECK-AUFNR
346| I_DMBTR = LT_AUNFR_CHECK-DMBTR
347| I_WAERS = LV_WAERS
348| IMPORTING
349| E_RESULTCODE = LV_CODE
350| E_RESULTMSG = LV_MSG.
351|
352| IF LV_CODE = 'E'.
353| B_RESULT = B_FALSE.
354| MESSAGE E000(ZFIM2) WITH LV_MSG.
355| EXIT.
356| ENDIF.
357| ENDLOOP.
358| ENDFORM. "U200
- EN: Calls Z_CO_CHECK_BUDGET per aggregated cost center/order and fails the validation (blocking the posting) when the budget is exceeded.
- 호출(파서): Z_CO_CHECK_BUDGET, Z_CO_CHECK_BUDGET
- SAP 객체: Z_CO_CHECK_BUDGET, GB002_015, ZFIM2
- 업무 키워드: 예산체크, 예산초과, 전기차단, 검증실패, 예산관리, 오류메시지
- English: budget check, budget exceeded, posting block, validation failure, budget control
- 정의부(복사 시 함께 필요):
LT_KOSTL_CHECK,LV_BUKRS,LV_BUDAT,LV_WAERS,LV_CODE,LV_MSG,LT_AUNFR_CHECK - 선언을 못 찾은 이름: B_FALSE (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치:
abap://ZRGGBR000/ZRGGBR000#L319-L358· confidence 0.9 ·ZRGGBR000#ZRGGBR000#FORM#U200#C2
정의부 (9건)
로직 조각을 다른 프로그램으로 옮겨 붙일 때 함께 가야 하는 선언이다. 조각별로 무엇이 필요한지는 위 조각 항목의 정의부 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 GET /chunks/<chunk_id> 의 declaration_code 로 받는다.
ZRGGBR000 (9건)
EXITS — data · unit 로컬 · L49-L53
DATA: BEGIN OF EXITS OCCURS 50,
NAME(5) TYPE C,
PARAM LIKE C_EXIT_PARAM_NONE,
TITLE(60) TYPE C,
END OF EXITS.
LV_BUKRS — data · unit 로컬 · L259-L259
DATA : LV_BUKRS LIKE BKPF-BUKRS.
LV_BUDAT — data · unit 로컬 · L260-L260
DATA : LV_BUDAT LIKE BKPF-BUDAT.
LV_WAERS — data · unit 로컬 · L261-L261
DATA : LV_WAERS LIKE BKPF-WAERS.
LS_BSEG — data · unit 로컬 · L262-L262
DATA : LS_BSEG LIKE BSEG.
LV_CODE — data · unit 로컬 · L263-L263
DATA : LV_CODE TYPE ZEIFFG.
LV_MSG — data · unit 로컬 · L264-L264
DATA : LV_MSG TYPE ZEERRDESC.
LT_KOSTL_CHECK — data · unit 로컬 · L266-L270
DATA : BEGIN OF LT_KOSTL_CHECK OCCURS 0,
KOSTL LIKE CSKS-KOSTL,
KSTAR LIKE CSKA-KSTAR,
DMBTR LIKE BSEG-DMBTR,
END OF LT_KOSTL_CHECK.
LT_AUNFR_CHECK — data · unit 로컬 · L272-L275
DATA : BEGIN OF LT_AUNFR_CHECK OCCURS 0,
AUFNR LIKE AUFK-AUFNR,
DMBTR LIKE BSEG-DMBTR,
END OF LT_AUNFR_CHECK.
Unit 목록 (컨테이너)
| unit | 유형 | 위치 | 조각 | 한 줄 요약 |
|---|---|---|---|---|
| GET_EXIT_TITLES | FORM | ZRGGBR000 L47-103 | 2 | GGB0 검증 규칙에서 선택할 수 있는 사용자 Exit 목록(U100, US001, UM001, U200 예산통제)을 ETAB 에 등록하는 FORM 이다. |
| U100 | FORM | ZRGGBR000 L114-131 | 0 | 전기일자 검증 예제 Exit(U100)로 본문이 주석 처리되어 실제 로직이 없는 FORM 이다. |
| US001 | FORM | ZRGGBR000 L188-206 | 0 | SAP-EIS 단일 레코드 검증용 예제 Exit 로 본문이 모두 주석 처리된 빈 FORM 이다. |
| UM001 | FORM | ZRGGBR000 L222-245 | 0 | SAP-EIS 매트릭스 검증용 예제 Exit 로 본문이 모두 주석 처리된 빈 FORM 이다. |
| U200 | FORM | ZRGGBR000 L256-358 | 2 | 전표 전기 시 코스트센터·오더별 예산을 초과하는지 검증해 초과하면 전기를 막는다 (GGB0 검증 Exit). |