Files
ABAP-Indexing/wiki/programs/ZRGGBR000.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 ZRGGBR000 SAP 표준 검증 Exit 폼풀 RGGBR000 을 회사용으로 복사한 프로그램이다. GGB0(검증) 에서 정의한 검증 규칙이 호출하는 사용자 Exit(U100, US001, UM001, U200)을 담으며, 전표 전기 시 예산 체크(Z_CO_CHECK_BUDGET) 같은 회사 고유 검증 로직을 수행한다. GET_EXIT_TITLES 에 Exit 목록을 등록해야 GGB0 에서 선택할 수 있다. abap://ZRGGBR000
검증
예산관리
전표
설정
FI
예산통제
코스트센터
원가요소
오더
금액합산
차대구분
순증감
전표아이템
예산체크
예산초과
전기차단
검증실패
오류메시지
검증 Exit 등록
예산 통제
by at
abap-indexing/z-ai/glm-5.2:free 2026-09-20T15:36:23+00:00
stable
T001
Z_CO_CHECK_BUDGET
4e5035dfc2db296a35ee8167070a42538171448b19d9660acc745b40eb5bdd3d 7 4 0

업무 목적

SAP 표준 검증 Exit 폼풀 RGGBR000 을 회사용으로 복사한 프로그램이다. GGB0(검증) 에서 정의한 검증 규칙이 호출하는 사용자 Exit(U100, US001, UM001, U200)을 담으며, 전표 전기 시 예산 체크(Z_CO_CHECK_BUDGET) 같은 회사 고유 검증 로직을 수행한다. GET_EXIT_TITLES 에 Exit 목록을 등록해야 GGB0 에서 선택할 수 있다.

주 흐름

  1. GGB0 에서 검증 규칙이 Exit 를 선택할 수 있도록 Exit 목록을 등록한다 (GET_EXIT_TITLES)
  2. 전표 전기 시 해당 검증 규칙이 등록된 Exit 를 호출한다
  3. 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).