Initial commit: ABAP indexing pipeline (ingest, parser, summarize, index, query, wiki)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,236 @@
|
||||
---
|
||||
type: abap-program
|
||||
title: "ZRGGBS000"
|
||||
description: "SAP 표준 대체 Exit 폼풀 RGGBS000 을 회사용으로 복사한 프로그램이다. GGB1(대체) 에서 정의한 대체 규칙이 호출하는 사용자 Exit(U100, U101, U200)을 담으며, 전표 전기 시 코스트센터를 CSKS 에서 읽어 채우거나 이동유형을 참조에서 유도(XREF_TO_RMVCT)하는 등 필드 자동 대체를 수행한다."
|
||||
resource: "abap://ZRGGBS000"
|
||||
tags: ["대체", "전표", "코스트센터", "설정", "FI", "이동유형", "참조필드", "연결이전", "검증", "캐시", "마스터조회", "필수입력", "유효성검증", "오류메시지", "전기차단", "대체 Exit", "이동유형 유도", "연결 거래유형", "참조 필드", "대체 Exit 등록"]
|
||||
generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:23+00:00" }
|
||||
status: stable
|
||||
x-package:
|
||||
x-changed-on:
|
||||
x-tables-read: ["T856"]
|
||||
x-tables-write: []
|
||||
x-calls: []
|
||||
x-code-hash: "407839a9bd026bbd7a8b6b1524cb9abe9db9b39c367359ef71078c184903d33c"
|
||||
x-unit-count: 6
|
||||
x-chunk-count: 4
|
||||
x-declaration-count: 7
|
||||
---
|
||||
|
||||
## 업무 목적
|
||||
|
||||
SAP 표준 대체 Exit 폼풀 RGGBS000 을 회사용으로 복사한 프로그램이다. GGB1(대체) 에서 정의한 대체 규칙이 호출하는 사용자 Exit(U100, U101, U200)을 담으며, 전표 전기 시 코스트센터를 CSKS 에서 읽어 채우거나 이동유형을 참조에서 유도(XREF_TO_RMVCT)하는 등 필드 자동 대체를 수행한다.
|
||||
|
||||
## 주 흐름
|
||||
|
||||
1. GGB1 에서 대체 규칙이 Exit 를 선택할 수 있도록 Exit 목록을 등록한다 (GET_EXIT_TITLES)
|
||||
2. 전표 전기 시 대체 규칙이 등록된 Exit 를 호출한다
|
||||
3. U100/U101 에서 CSKS 를 읽어 코스트센터를 채운다
|
||||
4. 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 에서 선택할 수 있게 한다.
|
||||
|
||||
```abap
|
||||
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`](#decl-zrggbs000-56-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 에 채운다.
|
||||
|
||||
```abap
|
||||
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`](#decl-zrggbs000-23-bkpf), [`BSEG`](#decl-zrggbs000-24-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)에서 이동유형 값을 꺼낸다.
|
||||
|
||||
```abap
|
||||
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](/tables/T856.md) / write -
|
||||
- SAP 객체: T856, BSEG, XREF1, XREF2, RMVCT
|
||||
- 업무 키워드: 이동유형, 참조필드, 연결이전, 검증, 캐시, 마스터조회
|
||||
- English: movement type, reference field, consolidation transaction type, validation, static cache, T856
|
||||
- 정의부(복사 시 함께 필요): [`ST_RMVCT`](#decl-zrggbs000-217-st_rmvct)
|
||||
- 위치: `abap://ZRGGBS000/ZRGGBS000#L220-L231` · confidence 0.85 · `ZRGGBS000#ZRGGBS000#FORM#XREF_TO_RMVCT#C1`
|
||||
|
||||
#### [validation] 참조필드가 비어 있으면 '연결이전 이동유형을 입력하라'는 오류를, 값이 T856 에 없으면 '이동유형이 유효하지 않다'는 오류를 각각 필드명을 넣어 발생시켜 전표 전기를 막는다.
|
||||
|
||||
```abap
|
||||
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`](#decl-zrggbs000-216-l_msgv), [`ST_RMVCT`](#decl-zrggbs000-217-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 {#decl-zrggbs000-22-gb002}
|
||||
|
||||
```abap
|
||||
TYPE-POOLS: GB002. " TO BE INCLUDED IN "wms092357
|
||||
```
|
||||
|
||||
#### BKPF — tables · L23-L23 {#decl-zrggbs000-23-bkpf}
|
||||
|
||||
```abap
|
||||
TABLES: BKPF. " ANY SYSTEM THAT "wms092357
|
||||
```
|
||||
|
||||
#### BSEG — tables · L24-L24 {#decl-zrggbs000-24-bseg}
|
||||
|
||||
```abap
|
||||
TABLES:
|
||||
BSEG. " HAS 'FI' INSTALLED "wms092357
|
||||
```
|
||||
|
||||
#### COBL — tables · L25-L25 {#decl-zrggbs000-25-cobl}
|
||||
|
||||
```abap
|
||||
TABLES:
|
||||
COBL. " wms092357
|
||||
```
|
||||
|
||||
#### CSKS — tables · L26-L26 {#decl-zrggbs000-26-csks}
|
||||
|
||||
```abap
|
||||
TABLES:
|
||||
CSKS. " wms092357
|
||||
```
|
||||
|
||||
#### ANLZ — tables · L27-L27 {#decl-zrggbs000-27-anlz}
|
||||
|
||||
```abap
|
||||
TABLES:
|
||||
ANLZ. " wms092357
|
||||
```
|
||||
|
||||
#### GLU1 — tables · L28-L28 {#decl-zrggbs000-28-glu1}
|
||||
|
||||
```abap
|
||||
TABLES:
|
||||
GLU1. " wms092357
|
||||
```
|
||||
|
||||
#### EXITS — data · unit 로컬 · L56-L60 {#decl-zrggbs000-56-exits}
|
||||
|
||||
```abap
|
||||
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 {#decl-zrggbs000-216-l_msgv}
|
||||
|
||||
```abap
|
||||
data l_msgv type symsgv.
|
||||
```
|
||||
|
||||
#### ST_RMVCT — data · unit 로컬 · L217-L217 {#decl-zrggbs000-217-st_rmvct}
|
||||
|
||||
```abap
|
||||
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) 값을 연결이전 이동유형으로 변환하고 유효성을 검증한다. |
|
||||
Reference in New Issue
Block a user