Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
12 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 | ZRGGBS000 | SAP 표준 대체 Exit 폼풀 RGGBS000 을 회사용으로 복사한 프로그램이다. GGB1(대체) 에서 정의한 대체 규칙이 호출하는 사용자 Exit(U100, U101, U200)을 담으며, 전표 전기 시 코스트센터를 CSKS 에서 읽어 채우거나 이동유형을 참조에서 유도(XREF_TO_RMVCT)하는 등 필드 자동 대체를 수행한다. | abap://ZRGGBS000 |
|
|
stable |
|
407839a9bd026bbd7a8b6b1524cb9abe9db9b39c367359ef71078c184903d33c | 6 | 4 | 7 |
업무 목적
SAP 표준 대체 Exit 폼풀 RGGBS000 을 회사용으로 복사한 프로그램이다. GGB1(대체) 에서 정의한 대체 규칙이 호출하는 사용자 Exit(U100, U101, U200)을 담으며, 전표 전기 시 코스트센터를 CSKS 에서 읽어 채우거나 이동유형을 참조에서 유도(XREF_TO_RMVCT)하는 등 필드 자동 대체를 수행한다.
주 흐름
- GGB1 에서 대체 규칙이 Exit 를 선택할 수 있도록 Exit 목록을 등록한다 (GET_EXIT_TITLES)
- 전표 전기 시 대체 규칙이 등록된 Exit 를 호출한다
- U100/U101 에서 CSKS 를 읽어 코스트센터를 채운다
- XREF_TO_RMVCT 에서 참조번호로부터 이동유형(RMVCT)을 유도한다
테이블 / 외부 호출
- read: T856
- write: -
- 외부 호출: -
로직 조각 (4건 / unit 3개)
LLM 이 코드에서 골라낸 업무 로직 단위다. 조각마다 소스 원문과 자연어 설명을 함께 싣는다 — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. 테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.
FORM GET_EXIT_TITLES — ZRGGBS000 L54-L102 (49줄)
GGB1 대체 규칙에서 선택 가능한 사용자 Exit 목록(U100·U101 코스트센터, U200 연결 이동유형)과 파라미터 유형·제목을 ETAB 에 등록한다.
이 unit 의 조각 1개가 15/49줄(31%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[other] 대체 Exit U100(파라미터 없음, CSKS 코스트센터)·U101(필드 파라미터, CSKS 코스트센터)·U200(필드 파라미터, XREF 기반 연결 이동유형)의 이름·파라미터 유형·제목을 EXITS 에 등록해 GGB1 에서 선택할 수 있게 한다.
62| exits-name = 'U100'.
63| exits-param = c_exit_param_none.
64| exits-title = text-100. "Cost center from CSKS
65| APPEND exits.
66|
67| exits-name = 'U101'.
68| exits-param = c_exit_param_field.
69| exits-title = text-101. "Cost center from CSKS
70| APPEND exits.
71|
72| * begin of insertion "wms092357
73| exits-name = 'U200'.
74| exits-param = c_exit_param_field.
75| exits-title = text-200. "Cons. transaction type
76| APPEND exits. "from xref1/2
- EN: Register the substitution exits U100 (no parameter, cost center from CSKS), U101 (field parameter) and U200 (field parameter, consolidation transaction type from XREF1/2) with their parameter type and title so GGB1 can offer them.
- SAP 객체: GGB1, RGGBS000, CSKS
- 업무 키워드: 대체 Exit 등록, Exit 목록, 코스트센터 대체, 이동유형 대체
- English: Substitution Exit, GGB1, Exit Registration, RGGBS000
- 정의부(복사 시 함께 필요):
EXITS - 선언을 못 찾은 이름: C_EXIT_PARAM_NONE, C_EXIT_PARAM_FIELD (수집 안 된 인클루드·함수 인터페이스일 수 있다)
- 위치:
abap://ZRGGBS000/ZRGGBS000#L62-L76· confidence 0.85 ·ZRGGBS000#ZRGGBS000#FORM#GET_EXIT_TITLES#C1
FORM U200 — ZRGGBS000 L201-L203 (3줄)
대체(Substitution) Exit U200 으로, XREF_TO_RMVCT 를 호출해 전표 참조키(XREF1/2)로부터 연결 이동유형(RMVCT/BEWAR)을 유도해 반환한다.
이 unit 의 조각 1개가 1/3줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[control_flow] GGB1 대체 규칙에서 호출되는 Exit U200 이 BKPF/BSEG 를 넘겨 XREF_TO_RMVCT 로 참조 필드에서 연결 이동유형(BEWAR)을 유도해 E_RMVCT 에 채운다.
202| PERFORM xref_to_rmvct USING bkpf bseg 1 CHANGING e_rmvct.
- EN: Substitution exit U200 derives the consolidation transaction type (BSEG-BEWAR) from the document reference fields via XREF_TO_RMVCT and returns it in E_RMVCT.
- 호출(파서): XREF_TO_RMVCT
- SAP 객체: GGB1, BSEG, BKPF
- 업무 키워드: 대체 Exit, 이동유형 유도, 연결 거래유형, 참조 필드
- English: Substitution Exit, Transaction Type, RMVCT, GGB1
- 정의부(복사 시 함께 필요):
BKPF,BSEG - 위치:
abap://ZRGGBS000/ZRGGBS000#L202-L202· confidence 0.8 ·ZRGGBS000#ZRGGBS000#FORM#U200#C1
FORM XREF_TO_RMVCT — ZRGGBS000 L210-L247 (38줄)
전표의 참조필드(XREF1/XREF2) 값을 연결이전 이동유형으로 변환하고 유효성을 검증한다.
이 unit 의 조각 2개가 26/38줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.
[validation] 참조필드 지정값이 1 또는 2 인지 확인해 아니면 치명적 오류를 내고, 이동유형 마스터 T856 을 해시테이블에 한 번만 캐시한 뒤 지정된 참조필드(XREF1 또는 XREF2)에서 이동유형 값을 꺼낸다.
220| if i_xref_field <> 1 and i_xref_field <> 2.
221| message x000(gk) with 'UNEXPECTED VALUE I_XREF_FIELD ='
222| i_xref_field '(MUST BE = 1 OR = 2)' ''.
223| endif.
224| if st_rmvct is initial.
225| select trtyp from t856 into table st_rmvct.
226| endif.
227| if i_xref_field = 1.
228| c_rmvct = is_bseg-xref1.
229| else.
230| c_rmvct = is_bseg-xref2.
231| endif.
- EN: Validates the xref field selector (must be 1 or 2), caches the consolidation transaction-type master T856 once, and picks the value from BSEG-XREF1/XREF2.
- 테이블(파서): read T856 / write -
- SAP 객체: T856, BSEG, XREF1, XREF2, RMVCT
- 업무 키워드: 이동유형, 참조필드, 연결이전, 검증, 캐시, 마스터조회
- English: movement type, reference field, consolidation transaction type, validation, static cache, T856
- 정의부(복사 시 함께 필요):
ST_RMVCT - 위치:
abap://ZRGGBS000/ZRGGBS000#L220-L231· confidence 0.85 ·ZRGGBS000#ZRGGBS000#FORM#XREF_TO_RMVCT#C1
[validation] 참조필드가 비어 있으면 '연결이전 이동유형을 입력하라'는 오류를, 값이 T856 에 없으면 '이동유형이 유효하지 않다'는 오류를 각각 필드명을 넣어 발생시켜 전표 전기를 막는다.
232| if c_rmvct is initial.
233| write i_xref_field to l_msgv left-justified.
234| concatenate text-m00 l_msgv into l_msgv separated by space.
235| * cons. transaction type is not specified => send an error message...
236| message e123(g3) with l_msgv.
237| * Bitte geben Sie im Feld &1 eine Konsolidierungsbewegungsart an
238| endif.
239| * c_rmvct <> initial...
240| read table st_rmvct transporting no fields from c_rmvct.
241| check not sy-subrc is initial.
242| * cons. transaction type does not exist => send error message...
243| write i_xref_field to l_msgv left-justified.
244| concatenate text-m00 l_msgv into l_msgv separated by space.
245| message e124(g3) with c_rmvct l_msgv.
- EN: Raises an error if the reference field is empty or holds a transaction type absent from T856, blocking the posting.
- SAP 객체: T856, RMVCT
- 업무 키워드: 필수입력, 유효성검증, 오류메시지, 전기차단, 이동유형
- English: mandatory field, validity check, error message, posting block, movement type
- 정의부(복사 시 함께 필요):
L_MSGV,ST_RMVCT - 위치:
abap://ZRGGBS000/ZRGGBS000#L232-L245· confidence 0.87 ·ZRGGBS000#ZRGGBS000#FORM#XREF_TO_RMVCT#C2
정의부 (10건)
로직 조각을 다른 프로그램으로 옮겨 붙일 때 함께 가야 하는 선언이다. 조각별로 무엇이 필요한지는 위 조각 항목의 정의부 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 GET /chunks/<chunk_id> 의 declaration_code 로 받는다.
ZRGGBS000 (10건)
GB002 — type-pool · L22-L22
TYPE-POOLS: GB002. " TO BE INCLUDED IN "wms092357
BKPF — tables · L23-L23
TABLES: BKPF. " ANY SYSTEM THAT "wms092357
BSEG — tables · L24-L24
TABLES:
BSEG. " HAS 'FI' INSTALLED "wms092357
COBL — tables · L25-L25
TABLES:
COBL. " wms092357
CSKS — tables · L26-L26
TABLES:
CSKS. " wms092357
ANLZ — tables · L27-L27
TABLES:
ANLZ. " wms092357
GLU1 — tables · L28-L28
TABLES:
GLU1. " wms092357
EXITS — data · unit 로컬 · L56-L60
DATA: BEGIN OF exits OCCURS 50,
name(5) TYPE c,
param LIKE c_exit_param_none,
title(60) TYPE c,
END OF exits.
L_MSGV — data · unit 로컬 · L216-L216
data l_msgv type symsgv.
ST_RMVCT — data · unit 로컬 · L217-L217
statics st_rmvct type hashed table of rmvct with unique default key.
Unit 목록 (컨테이너)
| unit | 유형 | 위치 | 조각 | 한 줄 요약 |
|---|---|---|---|---|
| GET_EXIT_TITLES | FORM | ZRGGBS000 L54-102 | 1 | GGB1 대체 규칙에서 선택 가능한 사용자 Exit 목록(U100·U101 코스트센터, U200 연결 이동유형)과 파라미터 유형·제목을 ETAB 에 등록한다. |
| U100 | FORM | ZRGGBS000 L111-127 | 0 | SAP 예제 대체 Exit — 코스트센터를 CSKS 에서 읽어 부서로 바꾸는 샘플이지만 본문이 전부 주석 처리되어 동작하지 않는다. |
| U101 | FORM | ZRGGBS000 L138-154 | 0 | 대체 Exit U101 로 CSKS 에서 코스트센터의 부서(ABTEI)를 읽어 대체하도록 예시된 FORM 이나 실제 로직은 모두 주석 처리되어 비어 있다. |
| U200 | FORM | ZRGGBS000 L201-203 | 1 | 대체(Substitution) Exit U200 으로, XREF_TO_RMVCT 를 호출해 전표 참조키(XREF1/2)로부터 연결 이동유형(RMVCT/BEWAR)을 유도해 반환한다. |
| XREF_TO_RMVCT | FORM | ZRGGBS000 L210-247 | 2 | 전표의 참조필드(XREF1/XREF2) 값을 연결이전 이동유형으로 변환하고 유효성을 검증한다. |